Hallo allemaal,
Ik ben bezig met een kleine bot met twee motoren aan beide kanten en een zwenkwiel aan de achterzijde. (Voor een beter beeld het gaat om het volgende frame: https://www.hobbyelectronica.nl/product/smart-car-robot-chassis-2wd-pl…)
Nu heb ik een issue met de bot recht laten rijden. Mijn aanpak was om 2 PI- controllers te coden en beide motoren hetzelfde toerental te laten draaien. Het gewenste toerental is 60 rondjes per minuut of dus 1 per seconden.
Opzicht kwam ik redelijk in de buurt maar er blijft een te grote afwijking in de aansturing zitten. Even wat feiten op een rij:
- De encoders op de motor hebben 20 gaatjes dus met falling en rising interrupts heb ik 40 pulsen per seconden bij het gewenste toerental.
Ik zelf denk dat dit te weinig is want ik kan de RPM pas berekenen naar 2 pulsen. Hierdoor kan ik de pid loop maximaal met 20hz runnen en dat is dan afhankelijk van de snelheid. Daarnaast krijg ik de encoder niet 100 procent recht op de as waardoor je half om half steeds springt in RPM. Het zou beter zijn om een volledige rotatie te tellen en dan de RPM te berekenen maar dan heb ik een pid loop van 1hz wat voor meer afwijking zorgt.
Zou een encoder wiel met zeg 100 gaten hier veel beter gaan werken? Of doe ik fundamenteel iets verkeerd?