- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 22

Thema: ProBot mit asuro-Mega8

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8

    ProBot mit asuro-Mega8

    Hallo

    Der ProBot (zum selbst Zusammenlöten) wird ohne Kontroller geliefert. Da liegt es doch nahe selbst einen Kontroller draufzubasteln. Wegen der Ähnlichkeit beider Roboter würde sich dazu der ATMega8 des asuros geradezu aufdrängen. Ein vergleichender Blick in die Schaltpläne der beiden zeigt ähnliche bis teilweise identische Bestückungen:

    Netzteil: Nahezu identisch. ProBot mit Ladefunktion und stromfressender Status-LED. Aref und Spannungsteiler für Batteriemessung identisch:)

    IR: Empfänger hat beim ProBot günstigeren Wert (R11), Senden mit drei LEDs in Reihe (D6-8) scheint mir mit 150 Ohm in Reihe etwas schwach. Beides sollte aber mit dem Mega8 auch funktionieren.

    Odo: ProBot hat kleineren Vorwiderstand vor den LEDs (R5), Empfänger identisch.

    Line: Identisch bis auf R1/3 (20k-22k;)

    Motor: ProBot benötigt drei Pins, asuro sechs. Das sollte funktionieren.

    Taster: Der Reset-Taster geht wohl direkt auf den Reset-Pin, Boot-Taster an Tastenpin des asuro. Passt.

    LEDs: Zwei LEDs ersetzen die StatusLED.

    I2C: Der Mega8 kann auch das EEPROM des ProBot verwenden.

    Sound: Irgendwann gehen dem Mega8 die Pins aus. Durch die gesparten Motorpins könnte man noch den Lautsprecher bedienen und das Mic könnte am ADC4 des Mega8 angeschlossen werden (Boot-Taster dann auf gespartem Motorpin).

    ACS: Wenn das oben alles funktioniert ist noch ein Pin fürs ACS übrig :)


    Für die Verdrahtung des Adapters sehe ich eigentlich zwei Ansätze:

    Nach ProBot-Belegung: Soweit möglich werden die Pinbelegungen des Mega128 übernommen. Basis für die Software wird die ProBot-Library sein. Diese wird nach GCC übersetzt und an den Mega8 angepasst.

    Nach ProBot-Belegung (mit angepasster asuro-Lib): Die Funktionen werden, soweit möglich, wie beim ProBot angeschlossen. Die asuo-Library wird an die geändete Pinbelegung angepasst.

    Nach asuro-Belegung: Die ProBot-Hardware imitiert den orginalen asuro-Aufbau, Änderungen in der asuro-Lib für Motor, Tasten und alles was der orginale asuro-Aufbau nicht kann. Die Variante werde ich in Angriff nehmen.

    Die Kosten für das Projekt halten sich in Grenzen. Neben dem ProBot (Bausatz) benötigt man einen Adapter der nur ein paar zusätzliche Bauteile benötigt: Den 8MHz-Quarzschwinger, ein paar Kondensatoren, der Reset-Pullup, Sockel für Mega8, Stiftleisten zum Aufstecken auf den Probot und ein (geätztes?) Platinenstück. Zusätzlich benötigt man noch den asuro-Mega8 und einen IR-USB-Transceiver. asuro-Besitzer (wie ich) benötigen dagegen nur den Probot-Bausatz:)

    Wenn alles so funktioniert erhält man einen gut erweiterbaren asuro oder einen ProBot ohne Conrad-Software. Der nächste Schritt wäre dann noch der Einsatz eines ATMegas (8 oder 32) ohne Bootlader. Mal gespannt was draus wird.

    Gruß

    mic

    [Edit]
    Titel geändert
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Robotniks
    Registriert seit
    13.10.2007
    Beiträge
    175
    Hallo Radbruch,

    die Idee finde ich nicht schlecht, bin mal gespannt wenn du fertig bist.

    Grüße Robotniks

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.683
    Ja mic, das hört sich wirklich gut an.

    Wenn Du schon von Erweiterungen sprichst - und von Kompatibilitäten - dann wäre es zu überlegen, ob man statt des mega8 einen mega328p nimmt. Die Pinbelegung ist "gleich", beim 328 mit erweiterten Funktionen - allerdings anderen Steuerregistern.

    Mir war der m8 von Anfang an etwas sparsam mit Speicherplatz ausgerüstet, daher hatte ich frühzeitig den 168 (experimentell auch am asuro) genommen. Jetzt bin ich auf den 328p umgestiegen: viermal soviel Speicher wie der m8. Das ist für so gnaden- bzw. ahnungslose C-Programmiere wie mich genug Reserve. Der Funktionsbereich ist breiter als beim 8L - nämlich bis 1,8V statt der 2,7V beim 8L. Andere Unterschiede sind gering. Die etwa 0,3V höhere Ansprechschwelle ("... VIH, I/O Pin read as ‘1’ ...") könnte eher von Vorteil sein. Zeitweise war ja eine 168er Bibliothek für den asuro im Gespräch - die würde 1:1 auch beim 328er passen.

    Insgesamt glaube ich, dass bei der angesprochenen Anwendung die Vorteile die Nachteile z.B. durch die anderen Steuerregister aufwiegen können.
    Ciao sagt der JoeamBerg

  4. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Gerade eben bestellt. Blöderweise konnte ich meinen 20€-Gutschein ('Burtstag) nicht einlösen weil die Online-Kasse meine Nummer nicht fressen wollte. Während ich auf's Päckchen warte könnte ich schon mal (ohne langes googlen) ein paar Infos einholen:

    Sind die 16-poligen Stecker X1 bis X4 wirklich so asymetrisch aufgebaut wie es im Schaltplan (Doku S. 36) dargestellt ist?

    Conrad bietet keinen dreibeinigen Quarz-Oszillator an. Funktioniert mein Ersatztyp? Wie müßte ich den anschließen?

    Wie erkennt der Motortreiber (IC2, CD4093) die Drehrichtung?

    Könnte man die orginale ProBot-Programmierschnittstelle irgendwie nutzen? Verwendet die auch einen Bootlader?

    Im Moment orientiere ich mich am orginalen asuro-Mega8. Es könnte im Sockel natürlich auch ein anderer Mega thronen. Speichergrenzen hatte ich bisher noch nicht erreicht. Vielleicht liegt die Begrenzung aber auch eher bei mir. Nettes Sommerlochthema :)

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Robotniks
    Registriert seit
    13.10.2007
    Beiträge
    175
    Hallo Radbruch,

    ja die sind asymmetrisch aufgebaut.
    Den Oszillator versorgst du mit Vcc und GND, am
    Singalout-Pin kommt das Signal raus das du am
    Controller am XTAL1 anschließt. Du könntest aber auch
    den internen Oszillator benutzen?!

    Der Motortreiber ist so aufgebaut das bei einen Puls- Pausenverhältnis
    von 50% oder eben 1:1 der Motor steht (Bremsen). Bei einer 8Bit
    PWM-Auflösung wäre Stopp der Wert 128, vorwärts größer 128 und ein Wert kleiner 128 rückwärts.

    http://www.datasheetcatalog.org/data...ments/l293.pdf
    Siehe Seite 8.

    Die Original Schnittstelle geht an den TxD und RxD des ATmega128. Die Programmierung des Asuro-Controllers könnte funktionieren.


    Grüße Robotniks

  6. #6
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Danke für die schnelle Antwort.

    Du könntest aber auch den internen Oszillator benutzen?
    Leider nicht weil der asuro-M8 auf externen Oszillator eingestellt ist.

    das bei...Puls- Pausenverhältnis
    von 50% oder eben 1:1 der Motor steht (Bremsen)
    Das scheint mir etwas ungenau. Wenn genau so oft vorwärts wie rückwärts gefahren wird steht zwar der Antrieb, der Strom ist aber sehr hoch. War das PWM-Timing nicht auch hier das Problem?
    https://www.roboternetz.de/phpBB2/ze...ag.php?t=49197

    [Edit]
    Bedenke auch das bei einen PWM Tastverhältnis von 1:1 also 50% der Stromverbrauch am größten ist! Also in der Software bis auf 50% fahren (Bremsen) und bei Stillstand des Roboters die Enable Leitung des L239D auf Low (Treiber "Aus").
    Aha. Und was macht man bei 49%? Beim asuro werden den Motoren immer nur die Leistung zugeführt die sie benötigen. Beim ProBot ist es halbe Leistung linksdrehend minus halbe Leistung rechtsdrehend. Noch weiß ich nicht wie das funktionieren soll.
    [/Edit]

    Möglicherweise könnte man mit Kabel programmieren. Ich teste aber erst die IR-Schnittstelle ala asuro.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Inzwischen habe ich mir die Datenblätter der Motordriver-ICs und den Schaltplan genauer angeschaut. Schauderhaft! Im Plan fehlen wichtige Verbindungen (IC2:3-IC1:2) und das Konzept scheint mir falsch. Um niedrige Drehzahlen zu erhalten werden beide Richtungen gleichzeitig angesteuert. So stelle ich mir die Funktion einer PWM-Steuerung mit H-Brücken nicht vor. Deshalb "verbrät" der asuro auch sechs Pins nur um die Motoren anzusteuern. Vielleicht kann man aus dem IC2 noch eine Drehrichtung/PWM-Ansteuerung für beide Motoren rauskitzeln. Nötigenfalls mit zusätzlichen Leitungen zur Ansteuerung.

    Kann das PWM-Signal beim L293D auch über Enable eingespeist werden? Dann könnte man die PWM-Leitungen direkt auf IC1:1/9 legen. Dazu müßte man nur die Enableleitungen vom IC1 trennen und mit den PWM-Ausgängen des Kontrollers verbinden. Die PWM-Eingänge am NAND wären dann Drehrichtungsauswahl. Damit könnte man den Motor dann zwar nicht kurzschliesen, aber PWM 0% wäre dann auch null Strom. Das würde auch gut zu MotorSpeed() und MotorDir() der asuro-Lib passen.

    Gruß

    mic

    [Edit]
    Der Schaltplan wurde inzwischen wohl richtiggestellt:
    https://www.roboternetz.de/phpBB2/ze...=486143#486143
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken probot-motortreiber.jpg  
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.683
    Zitat Zitat von radbruch
    ... "verbrät" der asuro auch sechs Pins nur um die Motoren anzusteuern ...
    Hmm, ich verbrate auch sechs Pin für zwei Motoren. Mein Datenblatt von SGS THOMSON vom Juni 1996 nennt auch (Beispiel für eine Seite): 1 enable, 2 input1 und 9 input2. Enable ist der PWM-Eingang, input1 bzw. ~2 schaltet vorwärts oder rückwärts - wobei die jeweils gegensinnig bedient werden ==> ausgenommen man will bremsen, dann werden beide Eingänge high versorgt oder man stoppt, dann sind beide auf low. Das läuft bei mir und läuft und läuft . . .
    Ciao sagt der JoeamBerg

  9. #9
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Danke für die Infos.

    Enable ist der PWM-Eingang
    Wunderbar. Dann verwende ich die orginalen PWM-Leitungen zum NAND zur Drehrichtungsauswahl an PB4/5 des Mega8, unterbreche die orginalen Enableleitungen am IC1 und verbinde diese (irgendwie) direkt mit OC1A/B des Mega8. Dadurch werden PD4 und PD5 frei.

    ausgenommen man will bremsen
    Eben, bei sechs Leitungen kann man jede Halbbrücke einzeln ansteuern und die Motoren bei Bedarf kurzschliessen. Mit vier Leitungen und dem NAND kann ich dann immerhin unbestromt stehenbleiben. Die Schutzdioden dürften zusätzlich bremsend wirken, wenn die Ausgänge auf Z geschaltet sind.

    Die Tasterlösung gefällt mir noch nicht wirklich. Ich bin noch unentschieden ob ich den Tasten-ADC des asuros wirklich für das Mikrofon opfern soll oder ob ich hier besser die sechs Tasten des asuro nachbilde. Möglicherweise kann man das Signal aus dem Verstärker-IC3(LM386) auch mit einem digitalen Eingang auswerten. (1-Bit-Sampling oder einstellbarer Schwellwert mit Poti als Ersatz für Ausgangsteiler R19/20).

    Die StatusLed des ProBot (D5) ist LowCurrent, damit ist meine Anmerkung oben hinfällig. Die Vorwiderstände für die IR-LEDs (R12,D6-8 bzw. R13, D9-11) erscheinen mir ungünstig. Die verwendeten LEDs (TSUS520) haben eine typische Vorwärtsspannung von 1,3V (max. 1,7). Das ergibt (5V-3*1,3V)/150Ohm=0,007A pro Strang bei möglichen 150mA (Peek 300). Da scheint noch mehr Potentional vorhanden zu sein. Wellenlänge ist übrigends 950 nm.

    In der Doku werden folgende Motorfunktionen beschrieben:
    Code:
    DRIVE_INIT()
    Initialisiert den Antrieb. Bevor der Antrieb benutzt wird, muss diese Routine aufgerufen werden.
    DRIVE_ON()
    Setzt den Enable-Eingang des L293D auf High. Der Antrieb ist eingeschalten.
    DRIVE_OFF()
    Setzt den Enable-Eingang des L293 auf Low. Der Antrieb ist ausgeschalten.
    DRIVE(left as byte, right as byte)
    Timer1 PWM für den Antrieb:
    Werte zwischen 1 bis 128 = rückwärts
    Werte zwischen 128 bis 255 = forwärts
    Wert 128 = Antrieb stopp
    Motor_POWER(left as byte, right as byte)
    Geschwindigkeit, Werte zwischen 1 und 255
    Es muss zuvor mit MOTOR_DIR die Richtung vorgegeben werden.
    MOTOR_DIR(left as byte, right as byte)
    Gibt die Drehrichtung der Motoren für die Funktion MOTOR_POWER vor.
    1 = vorwärts
    0 = rückwärts
    MOTOR_STOP()
    Motor wird gestoppt, PWM wird auf 128 gesetzt.
    Wird das MotorDir() reingerechnet? Gibt es öffentlichen Quellcode der ProBot-Lib?

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Bei den IR LEDs ist die Durchlassspannung oft deutlich unter 1,3 V, wenn man den Strom nicht bis 100 mA hat. Bei etwa 10 mA kann das auch mal nur 1 V sein. Damit kommt man dann auch auf einen Strom von rund 15 mA. Das scheint hier ja auszureichen und Strom sparen ist sicher nicht Verkehrt bei Batteriebetrieb.

    Die originalschaltung zur Motorsteuerung sieht wirklich nicht gut aus. Änderungen sind da wirklich sinnvoll. Eine Steuerung mit 4 Leitungen sollte auch reichen.

    Für den Takt braucht man nicht unbedingt einen Oszillatorbaustein. Ein Quarz reicht aus und ist in der Regel kleiner, günstiger, leichter zu bekommen und sparsamer.

    Das Mikrofon nur digital auszuwerten, wird glaube ich schwer. Da kann man besser auf die direkte Messung der Versorgungsspannung verzichten. Das kann mämlich auch ohne einen extra Pin haben: Man stellt AVCC als Ref. ein, und die 1,3 V Bandgap als zu messende Spannung. Das Ergebnis ist dann halt 1023 * 1,3 V / AVcc.

Seite 1 von 3 123 LetzteLetzte

Berechtigungen

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

12V Akku bauen