hey danke!!!
leider funktioniert es bei mir immer noch nicht. ich weiße es nicht ob es an der programmierung oder an der hardware liegt.
ich wollte mein roboter fernsteuren. dazu verwende ich eine fernsteuerung und das funkboard eines helikopters. ich verbinde den pin der motoransteuerung des helikopters mit dem adc5 pin meines atmega32.
wenn ich bei der fernsteuerung gas gebe, soll sich der roboter nach vorne bewegen. das board des helikopters verwende ich mit einer 4.5 volt batterie und das hauptboard mit dem atmega32 mit 8 volt.
meine frage: kann der atmega32 die spannung an dem pin adc5 überhaupt messen wenn der atmega32 mit einer anderen spannungsquelle betrieben wird als das funkboard des helikopters???
ganzen programm:
[/code]Declare Sub 1()
Declare Sub 2()
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pind.5 = Output
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Pwm1a = 0
Pwm1b = 0
Tccr1b = Tccr1b Or &H02
Config Adc = Single , Prescaler = Auto
Const Adc = 4.5 / 1023
Sub 1()
Portc.6 = 0
Portc.7 = 1
Portd.4 = 0
Portb.0 = 1
Portb.1 = 0
Portd.5 = 1
Start Adc
Dim Z As Word
Z = Getadc(5) '5 ist der pin adc5 des atmega32
If Z > 909 Then 'also wenn mehr spannung als 4 volt(909)anliegt dann soll es die motoren starten
Do
Pwm1a = 1023
Pwm1b = 1023
Loop Until Z < 100 'er soll es solange ausführen bis an pin adc5 weniger als ungefähr 0.44 volt anliegt
End If
If Z < 100 Then ' wenn weniger als 0.44 volt anliegt dann soll er die motoren still legen
Do
Pwm1a = 0
Pwm1b = 0
Loop Until Z > 909 ' er soll die motoren stoppen bis an pin adc5 mehr als 4 volt anliegen
End If
End Sub[/scroll]
normale Flugsteller verwenden im Normalfall eine Pulsbreitensteuerung.
Das bedeutet, das hier nicht wirklich eine analoge Spannung anliegt, sondern zwischen voll an und voll aus hin und her geschaltet wird, sodass im Mittel dann die Spannung rauskommt, die der Motor kriegen soll.
Es kommt also darauf an, wann dein A/D Wandler seine Messung macht.
Und er wird dann immer entweder 0V oder 5V messen.
Wenn Du ohnehin den Motor über den Controller ansteuerst, warum gehst Du dann den Umweg über den Steller und wertest nicht gleich das Servosignal vom Gaskanal aus ?
Wie das geht könntest Du Dir mal bei www.rclineforum.de im Elektronik Teil unter Bascom Programmierung anschauen.
Wenn das nicht möglich ist, weil bei deinem Board alle Komponenten auf einer Platine sind, solltest Du mit einem RC Glied wieder eine analoge Spannung aus dem PWM Signal zurückgewinnen. Die kannst Du dann auf deinen A/D Wandler geben.
Um welches Hubschrauberboard handelt es sich denn ?
Die Leutchen aus der Modellbauecke haben da schon so einiges gebastelt.
also das forwärts fahren klappt jetzt gut.
aber ich wollte noch fragen kann der atmega 32 noch ungefähr 40-60 mV messen.
wenn ich eine refenenzspannung von 2.3 volt habe dann müssten 40-60 mV ungefähr 18-34 digit sein.
wollte mal fragen ob des richtig ist.
bei dem hubschrauber board handelt es sich um ein walkera rc model.
so ein kleiner für anfänger. das board steuert 2 Servos und zwei motoren an.
es ist so: ich habe einmal ein board mit dem atmega 32 selber gebaut und einmal das board des hubschraubers.
aber wie ich das signal gleich mit dem atmega 32 auswerten kann weiß ich net
wie das geht. wkrug danke für dein link ich werde mal schauen. http://www.david-schleicher.de/
Lesezeichen