• Hi Leute,

    ich plane gerade (m)einen ersten 2-Channel-Ant_FR! :D

    Die Idee steht, das Layout/Schaltplan sind ansich auch kein großes Problem.

    Nur hab ich eine Frage bezüglich der Ansteuerung.

    Der grundsätzliche Aufbau ist wie im angehängten Bild.


    Ich habe mich für zwei Halbbrücken je Antrieb entschieden, da ich bei den üblichen Verdächtigen (RS, Reichelt) einfach keine gescheite Full-Bridge finde...
    Entweder, die Leistung ist zu gering, das IC gleicht der Raumschiff Enterprise oder am häufigsten liegt die minimale Betriebsspannung bei 8V oder höher.

    Was ich brauche ist aber:
    - Motorstrom ~4A (2-3A wären auch gut gewesen)
    - Minimale Betriebsspannung: ~6V
    - ein oder zwei Vollbrücken, wobei eine einfache Vollbrücke nicht mehr als 8Pins, eine Doppelbrücke nicht mehr als 16 (max 20 Pins) haben sollte. Ich habe bei dem Projekt zwar erstaunlicherweise etwas mehr Platz als 10 x 10mm, Nämlich 30 x 18mm (!!) aber sooooo viel ist das nun auch nicht! :D
    - Überstromabschaltung
    - Übertemperaturabschaltung (muss aber nicht, ist eher Luxus! ;) )


    Ich bin eigendlich mit meinen vier Halbbrücken sehr zufrieden.
    Ü-Temp gibt es halt nicht und Overcurrent / Undervoltage mach ich mit dem AVR. ;)

    Nur wie steuere ich die am gescheitesten mit meinem ATTiny an?
    Bei der mir zur Verfügung stehenden Größe habe ich den ATTiny26 ausgewählt.
    Dieser hat zwei 8bit-Timer. Einer davon ist ein PWM-Timer mit vier (!) Ausgängen.
    - OC1A
    - /OC1A (also invertiert)
    - OC1B
    - /OC1B (also invertiert)

    Das sind die PWM-Ausgänge, mit denen man ja eigendlich die H-Brücken ansteuert.

    Mit einem Kanal hab ich es leicht. Man nehme OC1A und OC1B und klemmt diese an die N-FETs und gut.
    Aber bei zwei Brücken? Nimmt man die invertieren Ausgänge zur Hilfe??

    Darum die Frage an die Fahrtregler/Elektronik-Profis. Wie habt ihr das realisiert?

    Werde selber auch nochmal recherchieren, aber das aus erster Hand zu erfahren, wäre natürlich noch besser! :D

    • Offizieller Beitrag

    Bei separaten MOSFETs steuere ich grundsätzlich immer die LOW-Side an. Ist vielleicht auch noch historisch bedingt, weil die High-Side einen separaten Treiber benötigte, bei dem die Ladepumpe immer ziemlich lange brauchte, bis sie mal das Gate durchsteuerte.

    Also bei der Richtungsumschaltung den PWM-Ausgang zwischen den beiden Low-Sides wechseln.

    Dazu einfach zwei AND-Gatter verwenden. ;) Jeweils einen Eingang auf den PWM-Ausgang legen. Die beiden anderen Eingänge jeweils dazu benutzen, zu selektieren, welcher der beiden AND-Gatter denn nun das PWM-Signal durchleiten soll.

    Bei meinem Ant-Fahrtregler gibt es auch nur einen Steuerausgang am Prozessor, um Pins zu sparen. Dieser Ausgang geht auf einen And-Eingang. (s.o.) . Parallel dazu wird abgegriffen und geht auf einen Inverter. Von dort dann zum anderen Eingang des zweiten And-Gatters. Mit High oder Low von dem Prozessor steuere ich also, wer von den beiden And-Gatter der glückliche Gewinner ist und das PWM-Signal durchsteuern soll.

    Jetzt kommt der Pferdefuß, wo Du dann auch verzweifeln wirst. :D Du brauchst vier separate AND-Gater und zwei separate Inverter. ;) Also zwei zusätzliche ICs auf dem Layout. :D;)

    Zitat

    liegt die minimale Betriebsspannung bei 8V oder höher.


    Achte auch auf die maximale UDS, dass man auch drei Lipo-Zellen verwenden kann. Und dass das UGS das auch verkraftet. (Bin bei meinen ersten Halbbrücken auch drübergestolpert. Das waren nur 8V und zwei in Reihe geschaltete frisch geladene LiPos sind da schon über'm Limit). Knackpunkt ist bei Deiner Schaltung nicht der N-FET, sondern der P-FET. Bei ihm wird das Gate mit GND angesteuert. Also liegt da die volle Versorgungsspannung dran, wenn der Prozessor auf GND durchschaltet. ;)


    Mal sehen, war für Lösungsmöglichkeiten die anderen Elektrolurche so auf Lager haben....

    @Andreas: Ich schick' Dir heute abend meine Schaltpläne vom Ant-Regler durch, kannst ein bißchen "Copy *.* " machen.

  • Du hast recht. Daran verzweifle ich X( Mit den vier Halbbrücken, dem ATTiny26 (20Pin) und einem LM1117 Spannungsregler und diversen Widerständen ist das Layout restlos ausgenutzt... :..(

    Ok ich spare mir ein paar Ausgänge vom ATTiny, sodass ich evt. wohl einen kleineren nehmen kann. Aber einen zusätzlichen 16Pinner (ich meine kleiner gibt es die Gatter-ICs nicht) krieg ich da nie drauf >_>


    Hab mal bei meinem NIBO2 im Schaltplan geschaut wie die das gemacht haben... Ähnlich unmöglich... Oha... ;) Ich glaube da kann ich bald besser zwei seperate (8Pin) uC's verbauen. komm ich mit dem Platz besser aus..


    Ok dann zusätzlich in die andere Richtung gefragt: Hast du/ hat wer einen Treiber-IC-Tipp für mich?? ;) Die haben diese Logik ja schon drin. Da geht man ja meist nur mit einem PWM und einem DIR-Pegel je Antrieb rein.

    • Offizieller Beitrag

    Für welche Art...?

    2 N Channel in der High Side und 2 N Channel in der Low Side: AVR => TDA340 => 4 N-FETs

    2 P Channel in der High Side und 2 N Channel in der Low Side: AVR => Quad Low Side Driver (gibt ne Menge davon) => 2 N-FETs und 2 P-FETs

    Jede andere Kombi: AVR => Transistor Array => 2 N-FETs und 2 P-FETs

    Für die kleinen FETs eines ANT Reglers muss der Treiber nicht so fett sein. Eine Transistorstufe reicht schon, muss noch nicht mal Push-Pull sein. Ein paar Mikrocopter fliegen mit nem AVR der direkt über die Ports die 12A FETs befeuert ohne irgendene Art Treiber dazwischen...

    Mit ein wenig Logik ist einiges zu machen für ne 4Q Ansteuerung, es geht aber auch ganz ohne wenn man mutig ist. Software PWM mit 8 Channels geht fast mit jedem AVR der genügend Pins hat...

  • *Vorbestellenundalstestfahrerzurverfügungstellt* :D

    Nee ist schon so wie IBF und Gizmo gesagt haben. Es reichen zwei PWM Pins und zwei digitale Pins. PWM = vorwärts, PWM + digitalen Pin = Rückwärts.

    Nimm so eine H-Brücke http://www.mikrocontroller.net/attachment/575/bruecke.gif

    und lege den PWM auf einen AND und NAND. Mit dem And und NAND Steuerst du dan ob die PWM zur ersten oder zu zweiten Hälfte geleitet werden soll.
    Oder du nimmst zwei digitale Pins und zwei AND Gatter.

    Erfahrungen sind was sehr nützliches, leider macht man sie erst kurz nachdem man sie gebraucht hätte...

  • Zitat

    Original von IBF
    Jetzt kommt der Pferdefuß, wo Du dann auch verzweifeln wirst. :D Du brauchst vier separate AND-Gater und zwei separate Inverter. ;) Also zwei zusätzliche ICs auf dem Layout. :D;)


    Mein Glue Logic Detektor schlägt gerade aus. Warum externe Hardwarekomponenten verwenden? Wer sagt denn dass NUR die OCx Pins für die Ansteuerung der Halbbrücke hergenommen werden müssen? Es wäre natürlich vorteilhaft, weil dann die ganze PWM-Erzeugung ohne Softwarebeteiligung auskommt - aber bei einer PWM-Frequenz von 20 kHz kann ein ATTiny26 bei einer Taktfrequenz von 16 MHz immer noch < 800 Instruktionen zwischen den ISR-Aufrufen exektuieren. In der ISR werden einfach nur die entsprechenden Pins gesetzt/gelöscht - Der Instruktionsaufwand dafür ist gering. Bei einer Verringerung der PWM-Frequenz erhöht sich die Anzahl der Instruktionen zwischen den ISR-Aufrufen entsprechend. Der Vorteil von externen ICs ist natürlich die einfachere Ansteuerung der Brücke. Bei einem Antweight-FR jedoch, wo geringe Abmessungen/Gewicht ein entscheidender Faktor ist, würde ich mich für eine Softwarelösung entscheiden.

  • Stimmt jetzt wo du es sagst. Ich glaube bei den Multiwiicoptern wurden auch normale I/O Pins zur erzeugung einer PWM verwendet. Zwar nur mit 100HZ aber ist ja nur Einstellungssache.

    Hätte da vielleicht etwas gefunden. Hier wird per Software die PWM erzeugt und nicht über die interne Hardware. http://www.mikrocontroller.net/topic/149701

    Erfahrungen sind was sehr nützliches, leider macht man sie erst kurz nachdem man sie gebraucht hätte...

  • Argh X( über eine Software-Lösung hab ich noch garnicht nachgedacht! :))

    Ok, dann mache ich das natürlich per Software!
    Die anderen Tipps sind natürlich nicht schlecht, aber halt immer mit einem Zusatz-IC verbunden! ;)

    Bei Ants gilt bei mir "weniger ist mehr" :D Wie gesagt, ich bin Platzmäßig mit den paar Bauteilen am Limit!
    Ich wünsche mir diese Minibauform der ICs, die z.B. auf den Servoelektroniken sitz. Die sind nur halb so groß wie die SOICs! ;)


    Gerne Mike. Kann aber noch was dauern. Aber wenn alles klappt, sorgt das für einen erheblichen Platzgewinn und einer hohen Verdrahtungs-Reduzierung :D
    Die Idee kam mir beim Zusammenbau von Dredger MKII. Aber das ist noch eine Überraschung! ;)

    Ich wollte jetzt nur fix das Layout zusammen kriegen, weil ich diese Woche wohl die Leiterplatten des MBs von unserem Quadrocopter machen lassen wollte. Und da die ja eine Mindest-Fläche brauchen bietet es sich an, diese Mini-Leiterplatten dazu machen zu lassen. Dann brauch ich auch erst nur fünf oder so machen. Dann ist der Verlust nicht zu hoch, sollte doch etwas schief gehen! ;)

  • Wiso ätzt du nicht selber? Brauchst nur einen Laserdrucker, ein Bügeleisen und ne Plastikwanne :D. Und 10mil Leiterbahnen sind da auch mit möglich ;) . Bedarf zwar etwas übung und ist nicht so bequem wie machen lassen aber hast auch keine Mindestabnahme usw. Einzigstes Manko ich habe mich noch nicht an doppelseitige Platinen rangewagt.

    Erfahrungen sind was sehr nützliches, leider macht man sie erst kurz nachdem man sie gebraucht hätte...

    • Offizieller Beitrag
    Zitat

    Original von Krümmel
    Wiso ätzt du nicht selber? Brauchst nur einen Laserdrucker, ein Bügeleisen und ne Plastikwanne :D. Und 10mil Leiterbahnen sind da auch mit möglich ;) . Bedarf zwar etwas übung und ist nicht so bequem wie machen lassen aber hast auch keine Mindestabnahme usw. Einzigstes Manko ich habe mich noch nicht an doppelseitige Platinen rangewagt.

    Neben den üblichen Gefährdungen wie Kurschlüsse oder Haarrisse gibt es das Problem der Durchkontaktierungen. Gerade bei SMD wird's immer problematisch, weil man ständig die Lagen wechseln muss....

  • Das Problem ist, wie du schon sagtest, das Doppelseitige...

    Ich habe schon öfters Doppelseitig selber geätzt und kann nur sagen: Extrem schwer!!
    Auf der Arbeit haben wir ein Belichtungsgerät (sogar eines für Doppellayer). Ansich also kein Prob. Aber du musst beide Seiten exakt aufeinander legen. Dann musst du jede Durchkontaktierung einzeln Bohren und mit der anderen Seite verbinden (halt Draht durch und von beiden Seiten Löten).

    Hab grad kein Bild von meinem Quadrocopter-Layout. Aber da sind min. 50 Durchkontaktierungen drauf. Dazu ist alles recht dicht beisammen. Ein minimalstes verrutschen wäre das Ende! :D


    Bei meinen Antreglern sieht es so aus:
    Die ersten Mini_Ant_FR habe ich selber geätzt. Da waren auch nur vier Durchkontaktierungen drauf.
    Von zehn Regler sind aber nur 4-5 in die nächste Runde gekommen, da die anderen entweder Falsch geschliffen wurden, die Layer verrutscht sind oder die Leiterbahnen nicht ordentlich geätzt wurden (zu kurz->Kurzschlüsse, zu lang->keine Leiterbahn mehr da ;) ).
    Reiner sagt immer ich verlege die Leiterbahnen "sehr sportlich" :D Stimmt, aber bei Ants muss halt alles möglichst klein sein! ;)


    Darum lass ich die lieber machen. Dabei hab ich kein Stress und kriege perfekte Qualität! :D Da kann ich dann noch filigraner Arbeiten! ;)

    Das ist mir das Geld dann auch wert! Den Stress tue ich mir nicht mehr an! ;)

    • Offizieller Beitrag
    Zitat

    Original von Alex


    Mein Glue Logic Detektor schlägt gerade aus.

    Aus dem Wikipedia-Beitrag
    " Heute wird eine externe Glue Logic fast ausschließlich durch programmierbare Logikbausteine (meist FPGAs und CPLDs) realisiert; früher fanden oft Ansammlungen von 74xx-Chips oder anderen einfachen Logikchips Verwendung als Glue Logic."

    *seufz* Da wird man zum aussterbenden Dinosaurier....


    Zitat

    Zwar nur mit 100HZ aber ist ja nur Einstellungssache.


    Kommt darauf an.... Ich selbst bin ja "Gegner" von Interrupt-Routinen. (Ich hasse es, wenn mir beim normalen Durchlauf eines Programms jemand dazwischenplappert und Werte verändert, die ich vorher vielleicht gerade berücksichtigt/berechnet/verwendet/modifiziert habe.)

    Angenommen Du machst die Verstellung des "Zu-Fuß-Generierten-PWM-Signals" über eine Timer-Abfrage in der regulären Arbeitsschleife: z.B. 0,02ms Timerauflösung; ergibt bei 1kHz PWM-Frequenz eine 1/50er Auflösung/Stufung. Die Auflösung sollte man haben.
    Aber die Arbeitsschleife in 20µs durchlaufen, um den richtigen Timerwert zu erwischen, ist ganz schön heftig. Einmal zu spät gekommen, schon jittert der Motor. Nicht schön. Ok,... auch beim Abfangen des Empfängersignals kann man mal um ein Digit zu spät kommen. Aber ich denke, was ich für einen Aufwand im Programm treibe, um alle drei/vier/fünf Empfängersignale möglichst korrekt zu erfassen. Das hat die Arbeitsschleife von der Anzahl der Sub-Aufrufe praktisch verdoppelt. Und längere Berechnungsroutinen mussten zerhackstückelt werden, damit dazwischen immer noch eine Empfängerabfrage möglich war.

    Klar, "Platz-ist-Trumpf" bei den Ant-Fahrtreglern. Aber standfest funktionieren sollte es hinterher halt auch... :D

    Irgendwo habe ich mal so ganz kleine Logik-ICs gesehen. Größe von ca. SOT123 . Da ist pro IC nur ein Gatter enthalten. Irgendwas war mit dem Zusatz "G" in der Typbezeichnung.... Muss mal recherchieren. Vielleicht hilft das weiter.

    Anderer perverse Idee: Die beiden PWM-Ausgänge auf einen freien Eingangsport legen. Zeitgleich mit dem Abfragen der zwei Empfängereingänge auch diese beiden Eingangsports abfragen und dann auf je einen der vier Ausgangsports (= Gates der vier N-FETS legen). Ok, komplizierter geht's wohl nicht mehr :rolleyes: , aber die sechs Gatter wären eingespart. Vorausgesetzt, der Controller hätte noch vier Portbits frei.

    Ich schiele mal zum Vorschlag von Giz, einen anderen Controller zu verwenden. Bei meiner bisher verwendeten PIC-Familie mache ich jetzt auch einen Generationswechsel. Statt zwei PWM hat der neue Controller fünf PWM verfügbar. Und kostet statt 7 Euro nur noch 2,20 Euro.

  • Zitat

    Original von IBF
    Kommt darauf an.... Ich selbst bin ja "Gegner" von Interrupt-Routinen. (Ich hasse es, wenn mir beim normalen Durchlauf eines Programms jemand dazwischenplappert und Werte verändert, die ich vorher vielleicht gerade berücksichtigt/berechnet/verwendet/modifiziert habe.)


    Interrupts und die darauf folgenden Interrupt Service Routinen sind meiner Ansicht nach eines der wichtigsten und mächtigsten Werkzeuge für die Implementierung eleganter und effizienter Mikrocontrollerprogramme. Wie sonst soll auf zum Programmablauf asynchrone Ereignisse mit minimaler/konstanter Latenz reagiert werden? In der Main-Routine meiner Firmware wird nur die Zustandsmaschine entsprechend weitergeschalten, die ganze Arbeit wie Bestimmung der Breite der Empfänger-Pulse, Berechnung der neuen Motorwerte und Erzeugung der PWM für die Vollbrücke passiert in ISRs. Natürlich können ISRs einem das Leben schwer machen - viele der durch ISR auftretenden Probleme lassen sich jedoch per Design vermeiden (Stichwort: Race-Conditions bei nicht atomaren Operationen durch temporäres Deaktivieren des globalen Interrupt Flags vermeiden ODER das Programm so entwerfen, dass die ISR nicht mit Daten aus der Hauptschleife arbeitet ODER ...).

    Noch einen Schritt weitergedacht: Beruflich arbeite ich mit den Mikrocontrollern der MSP430 Familie von Texas Instruments. Bei diesen µCs handelt es sich um 16-Bitter, sie haben meist einen Hardware-Multiplizierer an Board, bieten umfangreiche I/O-Funktionalität und sind durch und durch auf den Low-Power-Betrieb in batteriebetriebenen Geräten ausgelegt. Der typische Designansatz für ein Battery-Powered-MSP430-Programm ist es, in der Hauptschleife direkt in einen der zahlreichen Low-Power-Modi zu springen. Interrupts sorgen für ein Aufwachen des µCs, der angefallene Request wird abgearbeitet, µC geht danach automatsch wieder in einen Low-Power-Modus. Ohne ISRs wäre es unmöglich, ein stromsparendes Programm für den MSP430 zu schreiben.

  • Das klingt für mich "Anfänger" alles ziemlich kompliziert.

    So habe ich mir auch mal meine Gedanken gemacht, vor allem weil ich im Zuge meines Fernstudiums gerade bei der Digitaltechnik gelandet bin. Ich mags halt simpel, dann versteh ich auch mal was :P

    Was haltet ihr denn von diesem

    Multiplexer

    ?

    Ich finde das ist doch genau das, wovon ihr sagtet, ich sollte ein paar Gatter investieren. Bei dem Multiplexer hab ich aber alles kompakt in einem 10Pin-Gehäuse. ;)


    Was sagt ihr zu diesem Ansatz ?
    Die beiden PWMs kann ich dann so zwischen den N-Fets umschalten... ;)
    Die P-Fets bleiben an seperaten uC-Pins.

  • Ich will dich nicht von dem Verbau externer Komponenten abhalten - aber ich biete dir meine Unterstützung bei Fragen der Programmierung gerne an.

  • Die Unterstützung nehme ich gerne an! :D

    Aber wenn es mit einem Multiplexer o.Ä. einfacher geht. Mach ich das leiber so. Eine Software-PWM zu realisieren ist glaub ich garnicht so leicht... ;)

    Ein so'n kleinen Chip kriege ich denke schon noch auf das Layout. :)

    • Offizieller Beitrag

    Ich persönlich bin mit beiden Abschnitten von Alex einer Meinung. So gehe ich grundsätzlich vor wenn das gesamte Konstrukt das zulässt, allerdings bewege ich mich nur noch auf AVR und AVR32, evtl. mal noch auf Cortex-M. Spätestens wenn Echtzeitbetriebssysteme (oder auch schon einfache Scheduler) dazu kommen wird im Idle Task eigentlich immer die CPU schlafen gelegt. Der OS Tick wird über Interrupt des Timers generiert, der dann auch immer die CPU weckt...

    Ich persönlich würde einen AVR mit mehr PWM in Hardware nehmen. Bei dem Projekt geht aber auch die Software PWM Variante. In dem Fall muss man nicht immer das Rad neu erfinden und ich würde deswegen folgendes mal genauer lesen:
    http://www.mikrocontroller.net/articles/Soft-PWM

    • Offizieller Beitrag
    Zitat

    Bei diesen µCs handelt es sich um 16-Bitter, sie haben meist einen Hardware-Multiplizierer an Board, bieten umfangreiche I/O-Funktionalität und sind durch und durch auf den Low-Power-Betrieb in batteriebetriebenen Geräten ausgelegt.


    Ohne zuviel Firmengeheimnisse verraten zu müssen: Hier in meinem Betrieb wurde auch vor vielen Jahren von Motorola auf MSP430 umgestellt. (... und dann weiterentwickelt auf NEC... ;) )

    Die MSP430 sind für batteriebetriebene Zwecke optimiert und bringen dann bei den EMV-Prüfungen entsprechend immer viele meiner Kollegen in die Nähe des Wahnsinns... :rolleyes:

    Alex: Ich weis was Du meinst mit "effizienter Programmierung". Der Gebrauch von den Interrupts ist mir durchaus geläufig. (Frühere Praktikanten hatten den auch immer liebend gerne benutzt. Und wenn das Programm dann Blödsinn machte, musste ich die Sch...fehler raussuchen, weil irgendwo mal wieder ein Interrupt nicht gesperrt wurde und sich selbst überholte oder der Prozessor in den Sleep-Modus gelegt wurde, aber hinterher dann wieder 20 Taktzyklen brauchte, bis er endlich wach wurde, inzwischen war das Ereignis aber schon fast wieder vorbei....)

    Hört auf einen Dinosaurier und macht die Schaltung bzw. das Softwaredesign "wasserdicht". Sonst geht's euch wie vielen Fahrtregler-Entwicklern hier im Forum... => nie mehr wieder etwas gehört von den Projekten. ;)

  • Zitat

    Original von IBF
    Hört auf einen Dinosaurier und macht die Schaltung bzw. das Softwaredesign "wasserdicht". Sonst geht's euch wie vielen Fahrtregler-Entwicklern hier im Forum... => nie mehr wieder etwas gehört von den Projekten. ;)


    Ich fühle mich nicht angesprochen :D . Meins liegt nur auf Eis bis ich besser programmieren kann.

    Erfahrungen sind was sehr nützliches, leider macht man sie erst kurz nachdem man sie gebraucht hätte...

    Einmal editiert, zuletzt von Krümmel (16. Oktober 2013 um 12:14)

    • Offizieller Beitrag
    Zitat

    Original von Krümmel


    Ich fühle mich nicht angesprochen :D . Meins liegt nur auf Eis bis ich besser programmieren kann.

    Lies einfach mal die "uralt-Beiträge" von den Roboteers, die sich leider hier im Forum nicht mehr sehen lassen. X-Anläufe mit den Fahrtreglern gemacht, aber leider so "genial" ausgedacht, dass der erste Fehlschlag schon zum Frust und Abbruch geführt hat.

    => Ich will hier niemanden angreifen! Aber anders als in der Politik kann man bei uns ja aus der Vergangenheit lernen. ;)