- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 23

Thema: roboter mit atmega32

  1. #11
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    Anzeige

    Praxistest und DIY Projekte
    ich habe jetzt nochmal überlegt und das ganze auf einen code für einen µC zusammengefasst, allerdings tut sich gar nichts?!?!?!?!
    hier mal der vollständige code, vielleicht erkennt ja jemand von euch den fehler?!?!?!?

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

    Declare Sub Send1()
    Declare Sub Empfang1()

    Config Portd.0 = Output
    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 Adc = Single , Prescaler = Auto

    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

    Vs = 1
    Gnd = 0

    Enable Interrupts

    Dim X As Word

    Sub Send1()
    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
    End Sub

    Sub Empfang1()
    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
    End Sub


    Do
    Call Empfang1()
    Call Send1()
    Loop

    End


    mfg
    chris

  2. #12
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo CheGuevara,

    Eine Do-Loop Schleife ist endlos. Wenn das Programm einmal drin ist, kommt es nicht mehr heraus, ohne einen extra Unterbrechungs-Befehl.
    Obendrein habe ich die Vermutung, du glaubst, die Lichtgeschwindigkeit austricksen zu können, indem du nach dem Senden deiner Lichtimpulse gemütlich den ACD anwerfen kannst.
    BTW: Hast du den Link auf Wastes Beitrag schon gelesen?
    Was hast du daran nicht verstanden?

    Gruß, Michael

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    ja, habe den link gelesen, aber kenne mich null komma null mit c aus .....

  4. #14
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo CheGuevara,
    ich kenne mich auch nicht gut mit C aus.
    Waste hatte aber die Vorgehensweise beschrieben.
    Ich fasse sie mal mit meinen Worten zusammen:
    Die 36kHz werden von OC2 an PortB.3 bereitgestellt. Die Pulsweite bestimmt die Empfindlichkeit bzw. Entfernung und wird mit dem OCR2-Register eingestellt. Ein schrittweises Verbreitern der Impulse läßt die Sende-LED immer stärker leuchten, bis der TSOP anspricht. Dieser Punkt ist zur Entfernung proportional.

    Gruß, Michael

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    hallo michael,

    ich möchte aber nicht die entfernung messen, sondern lediglich bei einer best. entfernung den roboter eine best. aktion machen lassen.... das ich auch gar nicht das problem, sondern mein problem ist, dass ich nicht weiß, wie ich EINEN µC dazu kriege, senden und empfangen gleichzeitig auszuführen?!?!?!

    mfg
    chris

  6. #16
    Erfahrener Benutzer Roboter Genie Avatar von Michael
    Registriert seit
    17.01.2004
    Ort
    Karlstadt
    Alter
    55
    Beiträge
    1.258
    Hallo CheGuevara,

    es spielt doch keine Rolle, ob du die Entfernung mißt. Du kannst ja den Grenzwert der Erkennung (fast) beliebig festlegen.

    sondern mein problem ist, dass ich nicht weiß, wie ich EINEN µC dazu kriege, senden und empfangen gleichzeitig auszuführen?!?!?!
    dir wird nichts anderes übrig bleiben, als Wastes Vorgehen nachzuprogrammieren, da deine Hardware im Prinzip die gleiche ist.
    Da der Tsop normalerweise nicht zur Entfernungsmessung geeignet ist, finde ich Wastes Vorgehen ziemlich trickreich.
    Ich hatte es dir ja bereits in meinem letzten Post beschrieben.
    Senden und erkennen wird von einem einzigen µC erledigt.
    Was genau hast du nicht verstanden?

    Gruß, Michael

  7. #17
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    08.09.2007
    Ort
    Berlin
    Alter
    32
    Beiträge
    1.578
    ich verstehe nicht, warum ich nicht senden und empfangen in einer loop schleife schreiben kann?!?!?!?!

    mfg
    chris

  8. #18
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.803
    hallo dirk, ja, empfänger ist ein tsop1136 und ... ja, man kann ihn analog einlesen, es funktioniert!! er ist an adc(0) angeschlossen.
    Das Einlesen über einen ADC ist sinnlos, weil die TSOPs eine interne Verstärkungsregelung haben, so dass man aus dem Wert > 500 oder < 500 nicht sicher schließen kann, wie weit der Sender entfernt ist oder wie hell eine Sendediode strahlt.
    Ohnehin bewirkt dein Test auf >500 und <500 letztlich nur eine "digitale" Auswertung (High/low), die du viel schneller und sicherer mit einem digitalen Eingang machen kannst.

    Gruß Dirk

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

    ich denke, du hast ein wenig Angst vor den Registern des AVR?
    Senden und Empfangen in einer Schleife bringt keine konstante Frequenz zustande, du hast ja noch mehr zu erledigen.
    Vermutlich schafft der AVR die Schleife garnicht mit 36kHz, wenn gleichzeitig ein Pin abgefragt und darauf reagiert werden soll.

    Ich könnte mir höchstens noch vorstellen, einen Burst von vielleicht 20 Impulsen zu senden und gleich danach abzufragen, ob der TSOP empfängt. Quasi die Verzögerung des TSOP ausnutzen. Er geht ja nicht gleich nach dem letzten Puls wieder auf High.
    Das kriegt man dann in eine einzige Schleife.
    Vielleicht kann man mit der Anzahl der Impulse ein wenig an der Empfindlichkeit drehen.

    Gruß, Michael

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    33
    Beiträge
    601
    Hi,

    vill sollte man noch hinzufügen, dass ein Atmega32 bzw. die ganze serie
    keine 2 Loop Schleifen liefern kann, ich glaube das ist so ein Punkt in der
    Basic Programierung wo jeder durch muss, und merken muss das ein
    Atmega nicht almächtig ist. Wäre aber schön, muss man schon sagen.

    Also wenn du ein Signal losschickst, dann ist es dann auch sofort da
    (Lichtgeschwindichkeit liegt bei 300.000km/s oder so und im gegensatz
    dazu ist das Programm ein bisschen langsam. Du musst es also so wie
    in der Variante von Michaels Link machen. Vill ist es sogar sinnvoler
    eine IR/Ultraschall Modul zu benuntzen, da kommt dann am Ende nur
    noch die Entfernung ber I²C oder Analog raus und du kanst es dann ohne
    diesee ganze Sende Empfangs Gedöns realisieren.

    Schmarn Michael war 1 minute schneller ^^
    Grüße Furtion

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen