Hallo Ich habe ein Problem mit der Servo-Ansteuerung mit der BAscom-Routine und gleichzeitger ADC auswertung. Ich habe 2 Servos an den Atmega8 (Pollin Board) angeschlossen. Atmega läuft per exteren 8 Mhz Quarz. Ich kann die Servos mit der BAscom Routine problemlos ansteuern. Probleme gibt es nur wenn ich gleichzeitig versuche 2 ADC Werte einzulesen. Getadc(0) Getadc(1) Der erste Wert , steuert praktisch das Servo.( Getadc(0) ) Die Werte werden umgerechnet damit der Winkel der Potis welche am ADC Eingang hängen entsprechen. Im Prinzip nichts anderes als Messe die Spannung und erzeuge einen Wert für das Servo. Das ganze funktioniert solange super bis ich an den 2ten Eingan auch ein Poti hänge.Ich also einen 2 Wert per GetADC(1) einlese. Dan fängt das Servo je nach Stellung des 2ten Potis an zu zucken bzw läst sich nicht mehr steuern über den ersten Poti GetADC(0) Ich hoffe man kann das was ich schreibe nachvolziehen ? Vieleicht kennt das Problem jemand oder hat einen Rat/Tip für mich Schönen Abend noch ...... Hier der Code: $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 100 $swstack = 100 $framesize = 100 Config Adc = Free , Prescaler = Auto , Reference = Avcc Dim Messergebnis As Word Dim Messergebnis2 As Word Config Servos = 2 , Servo1 = Portd.1 , Servo2 = Portd.2 , Reload = 10 Dim Volt As Single Dim Volt2 As Single Dim Volt12 As Single Dim Volt22 As Single Dim Teiler As Single Config Portd = Output Teiler = 10 Enable Interrupts Do Messergebnis = Getadc(0) Volt = Messergebnis / Teiler Volt = Volt + 50 Volt2 = Round(volt) Messergebnis2 = Getadc(1) Volt12 = Messergebnis2 / Teiler Volt12 = Volt12 + 50 Volt22 = Round(volt12) Servo(1) = Volt2 Servo(2) = Volt22 Loop
Hallo, > Das ganze funktioniert solange super bis ich an den 2ten Eingan auch ein > Poti hänge.Ich also einen 2 Wert per GetADC(1) einlese. Was denn nun von beiden ? Poti anschliessen oder Wert einlesen ? Die ADC Eingänge sollten sich nicht beeinflussen! evt. das "Config Adc = Free" mal auf "single " ändern. Ich sehe hier denn Sinn für "free" nicht. Vielleicht solltest Du mal nen Schaltplan anhängen. Gruss Klaus
Hallo Im Prinzip beides .... Der Poti ist so angeschlossen , ich lese mit Getadc(0) bzw (1) nur die Spannung aus ! Je nach Stellung des Potis soll sich das Servo dan bewegen. Das klappt auch ganz gut das Servo stellt sich syncron mit dem Poti. Nur eben sobald ich einen zweiten Poti an den nechsten Port anschliese und ihn dan wie oben im Code benutze kommt es zu den o.g Problemen http://www.mikrocontroller.net/wikifiles/7/75/Tut_ADC_01.gif
Stefan schrieb: > kann man Servo()= .. einen Single-Wert zuweisen?? Das wird schon gehen, auch wenn die ganze single-Variablen in erster Instanz schon mal Unsinn sind. Aber ich denke auch, dass hier der Free-Running Mode des ADC die Probleme verursacht. Den ADC auf single umstellen, so dass sicher gestellt ist, dass ein GetADC(1) dann auch tatsächlich vom Kanal 1 seinen Wert liest.
.. Du beantwortest meine Frage nicht: was passiert, wenn Du das zweite poti anschliesst, dieses aber nicht abfragst und trotzdem daran drehst ? Ansonsten.. wie von Karl Heinz bestätigt: ADC = Single anstelle von Free (hat übrigens nichts mit deinen Single-Variablen zu tun. Bei Single Variablen rechnest du mit Kommastellen. Weder der ADC noch der Servo benötigen Kommastellen. Da müsste man dann später nochmal drüber nachdenken. Zunächst gest nun bitte der gegenseitigen Beeinflussung auf den grund. Gruss Klaus
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.