-         

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 23

Thema: roboter mit atmega32

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544

    roboter mit atmega32

    Anzeige

    hallo leute,

    ich bin gerade dabei, mir einen roboter zu bauen.
    dieser soll immer geradeausfahren, nur wenn ein gegenstand im weg ist, soll er solange einen kreis drehen (wie ein panzer, links und rechts antrieb), bis er wieder ungehindert weiterfahren kann.
    jetzt zu meinem problem:

    ich benutze einen tsop1136 und eine ir-led zur objekterkennung, die ir-led will/muss/soll ich mit ungefähr 36kHz betreiben. am anfag wollte ich die 36 kHz (samt unterbrechung, für rc5) mit dem atmega32 realisieren, aber dieser gibt mir eine ganz andere frequenz aus?? ich hatte eine loop-schleife geschrieben, mit

    do
    waitms 20
    ir-led = 1
    waitus 13.89
    ir-led = 0
    waitus 13.89
    loop

    allerdings waren die high/low zeiten viel länger?!?!?!?!

    jetzt habe ich das ganze mit einem ne555 realisiert, aber ich brauche ja (für rc5) immer nach 10 impulsen(?) eine unterbrechung, ....... deshalb habe ich mir gedacht, ich schließe einen bc548(reicht dieser für ca. 1kHz)
    mit dem collector an die anode (-) der ir-led und den emiter an - der spannungsquelle, basis schließe ich an den ausgangspin des atmega32 an und die kathode der ir-led an den ausgangspin des ne555...

    das funktioniert auch wunderbar, nur ich weiß nicht, wie ich zwei do-loop schleifen gleichzeitig betreiben kann?!?!?!?!?!

    gruß
    chris

    P.S.: ich weiß, dass ein atmega32 dafür überdimensioniert ist, ich habe aber nur diesen.

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    übersetzt käm dann das dabei raus:

    do

    waitms 33.89
    ir-led=1
    waitms 13,89
    ir-led=0

    loop

    sind dann irgendwas um 48 ms und das gibt 20,9 Hz
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    seit wann ergibt den 20ms + 13,89µs = 33,89ms ???????????

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo CheGuevara,

    Die Werte hinter Waitms und Waitus müssen ganze Zahlen zwischen 1 und 65535 sein.

    das funktioniert auch wunderbar, nur ich weiß nicht, wie ich zwei do-loop schleifen gleichzeitig betreiben kann?!?!?!?!?!
    Wie soll das gehen? Der Sprung geht immer vom erstbesten Loop zum letzten Do.

    Gruß, Michael

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    hallo michael,

    danke für die infos.
    ich habe jetzt statt waitus 13.89 waitus 14 eingegeben, und es funzt!

    ich habe jetzt nur noch ein (für dich/euch) vielleicht leichtes problem:

    ich benutzte im moment zwei atmega32, der eine sendet mit folgendem code:

    $regfile = "m32def.dat"
    $crystal = 16000000

    Config Portd.0 = Output

    Ou Alias Portd.0

    Do
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Ou = 1
    Waitus 14
    Ou = 0
    Waitus 14
    Waitms 20
    Loop



    und der andere empfängt dies und steuert die motoren (einer links, einer rechts) mit folgendem code:

    $regfile = "m32def.dat"
    $crystal = 16000000

    Config Porta.0 = Input
    Config Portd.1 = Output
    Config Porta.1 = Output
    Config Porta.2 = Output
    Config Portc.6 = Output
    Config Portc.7 = Output
    Config Portb.0 = Output
    Config Portb.1 = Output
    Config Portd.0 = Output
    Config Adc = Single , Prescaler = Auto

    Config Portc.0 = Output
    Config Portc.1 = Output

    Ml1 Alias Portc.6
    Ml2 Alias Portc.7
    Mr1 Alias Portb.0
    Mr2 Alias Portb.1
    Vs Alias Porta.1
    Gnd Alias Porta.2
    Ine Alias Porta.0
    Ou Alias Portd.0
    Ou2 Alias Portd.1

    Vs = 1
    Gnd = 0
    Ou2 = 0

    Enable Interrupts

    Dim X As Word

    Do
    Start Adc
    X = Getadc(0)
    If X > 500 Then
    Ml1 = 1
    Ml2 = 0
    Mr1 = 1
    Mr2 = 0
    Elseif X < 500 Then
    Ml1 = 0
    Ml2 = 1
    Mr1 = 0
    Mr2 = 0
    Waitms 500
    End If
    Loop


    diese beiden codes sollte man doch auf einen atmega laden können, aber ich bin zu blöd dafür?!!!!!!
    vielleicht könnte mir ja jemand tipps geben/helfen?!!!!

    mfg
    chris

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.791
    @Che Guevara:
    Am Empfänger sitzt ein TSOP1136???

    Den kann man nicht analog einlesen oder was ist an Adc(0) angeschlossen?

    Gruß Dirk

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo CheGuevara,

    diese beiden codes sollte man doch auf einen atmega laden können, aber ich bin zu blöd dafür?!!!!!!
    vielleicht könnte mir ja jemand tipps geben/helfen?!!!!
    du mußt den Code erst compilieren und dann einen passenden Programmieradapter verwenden.
    Beantwortet das deine Frage?

    Gruß, Michael

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    hallo dirk,

    ja, empfänger ist ein tsop1136 und ... ja, man kann ihn analog einlesen, es funktioniert!! er ist an adc(0) angeschlossen.

    @michael

    ich glaube, du verstehst mich nicht?!!!!

    ich möchte diese beiden codes im rechner (pc) zu einem zusammenfassen und dann diesen EINEN auf nur einen atmega draufladen?!!!!

    mfg
    chris

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    48
    Beiträge
    1.254
    Hallo CheGuevara,

    und dann diesen EINEN auf nur einen atmega draufladen
    das ist neu, oben schreibst du nämlich:
    ich benutzte im moment zwei atmega32, der eine sendet mit folgendem code:
    und der andere empfängt dies
    Zur Abstandsmessung hat Waste mal einen Beitrag geschrieben:
    http://www.roboternetz.de/phpBB2/zei...ag.php?t=11114
    Die prinzipielle Vorgehensweise erkennst du beim Lesen. Du mußt es nue noch auf Bascom portieren.

    Gruß, Michael

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    24
    Beiträge
    1.544
    sorry, war`n bisschen unverständlich...

    warum kann ich den nicht einfach diese beiden loop schleifen aus meinen zwei codes hintereinander schreiben??
    wenn ich das mache, funzt meistens nur eine und die andere wird überhaupt nicht beachtet?!!!!!

    mfg
    chris

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •