We zijn voor school met een project bezig waarbij we een traction control systeem op een bestuurbare auto willen bouwen. Het principe van het TCS is dat het systeem het vermogen van de auto verlaagt als er een 15% slip wordt geconstateerd. We willen het meten van de hoeveelheid slip doen aan de hand van het vergelijken van de toerentallen van de wielen. Deze toerentallen willen we dan meten door een relfective opto switch bij de wielen te zetten, een cirkel met de ene helft wit en de andere helft zwart te monteren aan de binnenkant van de velg. De opto switch geeft dan een hoog signaal als de witte helft van de cirkel passeert. Dit signaal gaat dan naar een atmega8 microcontroller van Atmel. Deze berekent dan het rpm en vergelijkt deze met elkaar. We programmeren de microcontroller met BASCOM-AVR.
Voor dat we de sensoren aan willen sluiten, willen we eerst kijken of het geschreven programma werkt. Dit wilden wij doen met behulp van 2 frequentie regelaars. (één voor elk wiel). Dit hebben wij gedaan en bij een frequentie van rond de 10 Hz werkt het programma vlekkeloos. Als we de ene frequentie regelaar op 10 Hz zetten en de andere op 11,5 Hz dan gaat er een LED branden. (Dit om de functie van het meten van de hoeveelheid slip te simuleren). Gaan wij de frequentie opkrikken naar 100 Hz (beide regelaars) dan gaat de LED branden ondanks dat er geen verschil in "toetental" is.
Iemand enig idee wat we fout hebben gedaan, en misschien hoe we dit zouden kunnen oplossen?
Ons programma ziet er zo uit:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Portc = Input
Config Portd = Output
Dim Verschil1 As Word
Dim Count1 As Word
Dim Count3 As Word
Dim Rpm1 As Word
Dim Rpm3 As Word
Dim Temp As Single
Dim Temp1 As Single
Dim Temp2 As Single
Dim Temp3 As Single
Dim Temp4 As Single
Do
Pulsein Count1 , Pinc , 4 , 1 'Meten rpm wiel 1
Temp1 = Count1 * 2
Temp2 = 1000000 / Temp1
Rpm1 = Temp2 * 60
Pulsein Count3 , Pinc , 2 , 1 'Meten rpm wiel 3
Temp3 = Count3 * 2
Temp2 = 1000000 / Temp3
Rpm3 = Temp2 * 60
Temp = Rpm1 - Rpm3
Temp4 = Temp / Rpm3
Verschil1 = Temp4 * 100
If 15 < Verschil1 Then
Portd.7 = 1
Else
Portd.7 = 0
End If
Loop
End
Voor dat we de sensoren aan willen sluiten, willen we eerst kijken of het geschreven programma werkt. Dit wilden wij doen met behulp van 2 frequentie regelaars. (één voor elk wiel). Dit hebben wij gedaan en bij een frequentie van rond de 10 Hz werkt het programma vlekkeloos. Als we de ene frequentie regelaar op 10 Hz zetten en de andere op 11,5 Hz dan gaat er een LED branden. (Dit om de functie van het meten van de hoeveelheid slip te simuleren). Gaan wij de frequentie opkrikken naar 100 Hz (beide regelaars) dan gaat de LED branden ondanks dat er geen verschil in "toetental" is.
Iemand enig idee wat we fout hebben gedaan, en misschien hoe we dit zouden kunnen oplossen?
Ons programma ziet er zo uit:
$regfile = "m8def.dat"
$crystal = 4000000
$baud = 9600
Config Portc = Input
Config Portd = Output
Dim Verschil1 As Word
Dim Count1 As Word
Dim Count3 As Word
Dim Rpm1 As Word
Dim Rpm3 As Word
Dim Temp As Single
Dim Temp1 As Single
Dim Temp2 As Single
Dim Temp3 As Single
Dim Temp4 As Single
Do
Pulsein Count1 , Pinc , 4 , 1 'Meten rpm wiel 1
Temp1 = Count1 * 2
Temp2 = 1000000 / Temp1
Rpm1 = Temp2 * 60
Pulsein Count3 , Pinc , 2 , 1 'Meten rpm wiel 3
Temp3 = Count3 * 2
Temp2 = 1000000 / Temp3
Rpm3 = Temp2 * 60
Temp = Rpm1 - Rpm3
Temp4 = Temp / Rpm3
Verschil1 = Temp4 * 100
If 15 < Verschil1 Then
Portd.7 = 1
Else
Portd.7 = 0
End If
Loop
End