Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
mhollfelder authored Jun 8, 2017
1 parent fe39cea commit 4f3d0b4
Show file tree
Hide file tree
Showing 8 changed files with 908 additions and 0 deletions.
78 changes: 78 additions & 0 deletions examples/pwm_demo/pwm_demo.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
#include <TLE94112.h>


void setup() {
int dc = 100;
//Serial for debug output
Serial.begin(9600);
while(!Serial);

//LED
pinMode(LED1, OUTPUT);

//power supply voltage should be available before tle94112.begin() is called
delay(100);
//enable tle94112
tle94112.begin();

/*
//update motor speed
//three different frequencies are shown on oscilloscope
tle94112.configPWM(tle94112.TLE_PWM1, tle94112.TLE_FREQ80HZ, dc);
tle94112.configPWM(tle94112.TLE_PWM2, tle94112.TLE_FREQ100HZ, dc);
tle94112.configPWM(tle94112.TLE_PWM3, tle94112.TLE_FREQ200HZ, dc);
*/

//halfbridges for outputting HIGH or PWM
tle94112.configHB(tle94112.TLE_HB1, tle94112.TLE_HIGH, tle94112.TLE_PWM1);
tle94112.configHB(tle94112.TLE_HB2, tle94112.TLE_HIGH, tle94112.TLE_PWM2);
tle94112.configHB(tle94112.TLE_HB3, tle94112.TLE_HIGH, tle94112.TLE_PWM3);
tle94112.configHB(tle94112.TLE_HB4, tle94112.TLE_HIGH, tle94112.TLE_NOPWM);

//halfbridges outputting LOW
tle94112.configHB(tle94112.TLE_HB5, tle94112.TLE_LOW, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB6, tle94112.TLE_LOW, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB7, tle94112.TLE_LOW, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB8, tle94112.TLE_LOW, tle94112.TLE_NOPWM);

//halfbridges floating / inactive
tle94112.configHB(tle94112.TLE_HB9, tle94112.TLE_FLOATING, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB10, tle94112.TLE_FLOATING, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB11, tle94112.TLE_FLOATING, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB12, tle94112.TLE_FLOATING, tle94112.TLE_NOPWM);
}

//duty cycle
int dc = 100;

void loop() {

//update dutycycle to show animation on oscilloscope
dc = (dc + 8) % 255;

//update motor speed
//three different frequencies are shown on oscilloscope
tle94112.configPWM(tle94112.TLE_PWM1, tle94112.TLE_FREQ80HZ, dc);
tle94112.configPWM(tle94112.TLE_PWM2, tle94112.TLE_FREQ100HZ, dc);
tle94112.configPWM(tle94112.TLE_PWM3, tle94112.TLE_FREQ200HZ, dc);


//print diagnosis information
int diagnosis = tle94112.getSysDiagnosis();
if(diagnosis==tle94112.TLE_STATUS_OK)
{
Serial.println("Status: OK");
}
else
{
Serial.print("Status: Error! ");
Serial.println(diagnosis);
tle94112.clearErrors();
}

//let LED blink to show that program is still running
delay(200);
digitalWrite(LED1, HIGH);
delay(200);
digitalWrite(LED1, LOW);
}
37 changes: 37 additions & 0 deletions examples/speedControl/speedControl.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#include <TLE94112.h>

#define pinDir 5
#define pinSpeed A1
//connect motor between halfbridge 1 and halfbridge 2


void setup() {
//power supply voltage should be available before tle94112.begin() is called
delay(100);
//enable tle94112
tle94112.begin();

pinMode(pinDir, INPUT);
pinMode(pinSpeed, INPUT);
}


void loop() {
//get desired direction from digital pin
int dir = digitalRead(pinDir);
if(dir == HIGH)
{
tle94112.configHB(tle94112.TLE_HB1, tle94112.TLE_HIGH, tle94112.TLE_PWM1);
tle94112.configHB(tle94112.TLE_HB2, tle94112.TLE_LOW, tle94112.TLE_NOPWM);
}
else
{
tle94112.configHB(tle94112.TLE_HB1, tle94112.TLE_LOW, tle94112.TLE_NOPWM);
tle94112.configHB(tle94112.TLE_HB2, tle94112.TLE_HIGH, tle94112.TLE_PWM1);
}

//get desired motor speed from analog input
int dc = analogRead(pinSpeed) >> 2;
//update motor speed
tle94112.configPWM(tle94112.TLE_PWM1, tle94112.TLE_FREQ80HZ, dc);
}
76 changes: 76 additions & 0 deletions keywords.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
#######################################
# Syntax Coloring Map For TLE94112
#######################################

#######################################
# Datatypes (KEYWORD1)
#######################################

Tle94112 KEYWORD1



#######################################
# Methods and Functions (KEYWORD2)
#######################################

begin KEYWORD2
end KEYWORD2
configHB KEYWORD2
configPWM KEYWORD2
getSysDiagnosis KEYWORD2
getHBOverCurrent KEYWORD2
getHBOpenLoad KEYWORD2
clearErrors KEYWORD2



#######################################
# Instances (KEYWORD2)
#######################################

tle94112 KEYWORD2
tle94112_2 KEYWORD2



#######################################
# Constants (LITERAL1)
#######################################

TLE_HB1 LITERAL1
TLE_HB2 LITERAL1
TLE_HB3 LITERAL1
TLE_HB4 LITERAL1
TLE_HB5 LITERAL1
TLE_HB6 LITERAL1
TLE_HB7 LITERAL1
TLE_HB8 LITERAL1
TLE_HB9 LITERAL1
TLE_HB10 LITERAL1
TLE_HB11 LITERAL1
TLE_HB12 LITERAL1

TLE_NOPWM LITERAL1
TLE_PWM1 LITERAL1
TLE_PWM2 LITERAL1
TLE_PWM3 LITERAL1

TLE_FLOATING LITERAL1
TLE_LOW LITERAL1
TLE_HIGH LITERAL1

TLE_FREQOFF LITERAL1
TLE_FREQ80HZ LITERAL1
TLE_FREQ100HZ LITERAL1
TLE_FREQ200HZ LITERAL1

TLE_SPI_ERROR LITERAL1
TLE_LOAD_ERROR LITERAL1
TLE_UNDER_VOLTAGE LITERAL1
TLE_OVER_VOLTAGE LITERAL1
TLE_POWER_ON_RESET LITERAL1
TLE_TEMP_SHUTDOWN LITERAL1
TLE_TEMP_WARNING LITERAL1

TLE_STATUS_OK LITERAL1
9 changes: 9 additions & 0 deletions library.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
name=TLE94112
version=0.1.0
author=Infineon Technologies
maintainer=Infineon Technologies <www.infineon.com>
sentence=This library provides an interface for Infineon's DC Motor Control Shield with TLE94112EL
paragraph=This shield provides 12 half-bridges which can drive up to 6 indipendent (+5 cascaded) bidirectional motors consuming up to 0.9 Ampere each
category=Device Control
url=https://www.infineon.com/dgdl/Infineon-DC_Motor_Control_Shield_with_TLE94112EL_UserManual-UM-v01_00-EN.pdf?fileId=5546d46259d9a4bf015a4755351304ac
architectures=*
Loading

0 comments on commit 4f3d0b4

Please sign in to comment.