Hackster is hosting Hackster Holidays, Ep. 7: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Friday!Stream Hackster Holidays, Ep. 7 on Friday!
Infineon Team
Published © MIT

Drive a pneumatic system using a single chip

Driving 9 solenoid valves and a DC compressor using the Infineon TLE94112ES 12-fold half-bridge Shield for Arduino.

BeginnerFull instructions provided2 hours486
Drive a pneumatic system using a single chip

Things used in this project

Hardware components

DC Motor Shield with TLE94112ES for Arduino
Infineon DC Motor Shield with TLE94112ES for Arduino
×1
Boot Kit XMC1100 (Arduino shield compatible)
Infineon Boot Kit XMC1100 (Arduino shield compatible)
×1
Solenoid Valve, 2 Way
Solenoid Valve, 2 Way
×9

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Laser cutter (generic)
Laser cutter (generic)

Story

Read more

Schematics

Pneumatic baseplate wireing

Fritzing diagram of sytem wireing

Code

Pneumatic baseplate

Arduino
This code is pushing up pneumatic cylinders in a random order.
The system is controlled by an Infineon TLE94112ES Multihalfbridge board.
#include <TLE94112.h>
#include <TLE94112_Motor.h>

Tle94112Motor aktor1(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor2(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor3(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor4(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor5(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor6(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor7(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor8(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor aktor9(tle94112, tle94112.TLE_NOPWM);
Tle94112Motor kompressor(tle94112, tle94112.TLE_PWM1);

void push(int i)
{
  switch (i) {
    case 1:    // your hand is on the sensor
       aktor1.start(255);
       delay(100);
       aktor1.stop(0);  
      break;
    case 2:    // your hand is close to the sensor
       aktor2.start(255);
       delay(100);
       aktor2.stop(0);  
      break;
    case 3:    // your hand is a few inches from the sensor
       aktor3.start(255);
       delay(100);
       aktor3.stop(0);  
      break;
    case 4:    // your hand is nowhere near the sensor
       aktor4.start(255);
       delay(100);
       aktor4.stop(0);  
      break;
    case 5:    // your hand is on the sensor
       aktor5.start(255);
       delay(100);
       aktor5.stop(0);  
      break;
    case 6:    // your hand is close to the sensor
       aktor6.start(255);
       delay(100);
       aktor6.stop(0);  
      break;
    case 7:    // your hand is a few inches from the sensor
       aktor7.start(255);
       delay(100);
       aktor7.stop(0);  
      break;
    case 8:    // your hand is nowhere near the sensor
       aktor8.start(255);
       delay(100);
       aktor8.stop(0);  
      break;
    case 9:    // your hand is nowhere near the sensor
       aktor9.start(255);
       delay(100);
       aktor9.stop(0);  
      break;
  }
  
}

void setup()
{
  Serial.begin(9600);
  // call begin for the TLE94112 firs
  tle94112.begin();
  
  aktor1.connect(tle94112.TLE_HB8, aktor1.HIGHSIDE);
  aktor2.connect(tle94112.TLE_HB12, aktor2.HIGHSIDE);
  aktor3.connect(tle94112.TLE_HB7, aktor3.HIGHSIDE);
  aktor4.connect(tle94112.TLE_HB10, aktor4.HIGHSIDE);
  aktor5.connect(tle94112.TLE_HB11, aktor5.HIGHSIDE);
  aktor6.connect(tle94112.TLE_HB9, aktor6.HIGHSIDE);
  aktor7.connect(tle94112.TLE_HB6, aktor7.HIGHSIDE);
  aktor8.connect(tle94112.TLE_HB3, aktor8.HIGHSIDE);
  aktor9.connect(tle94112.TLE_HB4, aktor9.HIGHSIDE);
  
  kompressor.connect(tle94112.TLE_HB5, kompressor.HIGHSIDE);  
  kompressor.connect(tle94112.TLE_HB2, kompressor.HIGHSIDE);
  kompressor.connect(tle94112.TLE_HB1, kompressor.HIGHSIDE);

  aktor1.begin();  
  aktor2.begin();
  aktor3.begin();
  aktor4.begin();
  aktor5.begin();
  aktor6.begin();
  aktor7.begin();
  aktor8.begin();
  aktor9.begin();
  kompressor.begin();
  }

void loop(){
  int a = random(1,10);
  Serial.println(a);
 //   tle94112.clearErrors(); 
 //   delay(200); 
  kompressor.start(255);
  //Serial.println("motor start");
  delay(500);

 // push(int (random(1,9)));
  push(a);

}

Credits

Infineon Team
92 projects • 140 followers

Comments