Das MC Board 2561 und seine Anbindungen

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » So 10. Nov 2013, 11:34

Hallo zusammen,

wir werden uns jetzt ein wenig mit dem Layout des MC 2561 Boards und seinen Anschlüssen vertraut machen. So mancher wird stöhnen (das wollten wir ja evtl. vermeiden) ... aber ich möchte, dass alle genau verstehen, was wir machen. Ich erkläre immer nur soviel, wie wir brauchen und werde wie gewohnt exakt erklären, jeder wird es verstehen:
2561 - UART Pin Belegungen.jpg
Ich habe aus diesem "Pamphlet" http://www.atmel.com/images/doc2549.pdf das Schema auf Seite 4 herauskopiert und darin das Bild vom realen MC-Board abgelegt.

Das 447 Seiten dicke Manual ist die komplette Beschreibung des Mikroprozessors mit all seinen Schnittstellen und Funktionen, die ein Programmierer studieren muss, um dem MC 2561 zu beherrschen. Ich werde gelegentlich auf Seiten verweisen, wenn ein Interessierter nachlesen möchte - aber ausdrücklich: Kein Projektteilnehmer muss dies tun, um seinen MC für den Anwendungsfall Modellbahnsteuerung zu einzusetzen. Dafür sorge ich mit meinen Übersetzungen! Wer nachlesen möchte, lade sich dieses .PDF auf seinen Rechner, es ist die verbindliche Referenz!

Um die Systematik im Schaubild zu verstehen, konzentrieren wir uns einmal auf das GRÜN umrandete GELBE RECHTECK:
Es erklärt die Ziffernfolge "PD7", die wir im GRÜNEN KREIS sehen. PD7 bezeichnet eine Schnittstelle (elektrische Anschlußstelle) am Mikroprozessor 2561, also eine von den 64 Anschlußstellen, die der MC 2561 bietet.

Das "P" weist auf einen physischen Port hin, der wiederum 8 Pins hat (kann man abzählen). Die Ziffer 7 bezeichnet den 8. Pin (Anschluß des Ports) - Achtung: der 1. Pin wird mit "0" gezählt ..., so daß der 8. Pin die Nummer 7 trägt.
Im Foto (GRÜNES RECHTECK mit dem GRÜNEN KREIS um das "D") erkennen wir den realen Bezug: "D" auf der Platine bezeichnet den Port D. Im Rechteck sehen wir aber noch 2 zusätzliche Pins (PIN8= MINUS=GROUND=GND und Pin9 = Plus 5 Volt). Ausdrücklich: Diese beiden Pins PIN8 und PIN9 gehören nicht zum Port - ein Port in der Informatik / Mikroprozessor hat immer nur PIN0 ... PIN7! Aber PIN8 und PIN9 gehören zum Stecker, der auf PORT D liegt :o - Alles unklar ? Gut - dann habt Ihr es ja verstanden!

WIR ZAEHLEN ALSO AB SOFORT (UND FÜR IMMER) DIE PORTBELEGUNGEN MIT DEN PINS BEGINNEND MIT PIN0 - wie die Profis. Dies kann ich Euch leider nicht ersparen - ansonsten wird es u.U zu "tödlichen" Verwechselungen kommen.

Wir haben bislang mit bereits einer wichtigen Schnittstelle zu tun gehabt, nämlich mit der Bootloader-Schnittstelle, die uns gleichzeitig auch noch die erste Kommunikation mit dem MC ermöglichte (über unser "Hallo"- Programm).

Wir sehen in dem obigen Schaubild am linken Rand ein rotes Rechteck, das ich mit UART0 gekennzeichnet habe. Ferner sehen wir darin die sogenannten PIN-Bezeichnungen PE0 und PE1 ("Pins" = "Stifte/Kontakte"). In Klammern sehen wir zu diesen Beiden Pins PE0 und PE1 Funktionsbezeichnungen (wie RXD-0 oder TXD-0).
Da mehrere Funktionsbezeichnungen in Klammern zu einem Pin aufgeführt werden (z.B. PE0 mit zusätzlich <RXD0/PCINT8/PDI>, bedeutet dies, dass je nach Programmierung diese PINs mit (3 zusätzlichen) unterschiedlichen Funktionen (zu einer Grundfunktionalität SCHALTER=Basisfunktionalität) belegt werden können.

Bezüglich PE0 und PE1 hat ATMEL vorab schon festgelegt, dass wir diese PINs in ihrer Funktion als Programmier - Schnittstelle - also als Kommunikations-Schnittstelle mit der Aussenwelt benötigen (eine Methode).
Das ist leider hier nicht ersichtlich, das steht auf einer der 447 Seiten - nämlich auf Seite 350 in <Table 30-15: Pin Mapping Serial Programming> ... :lol: ...! Kennt man diese Seite nicht, scheitert man als Porgrammierer schon in ersten Anlauf ...! :roll:

Bezüglich PE0 und PE1 haben wir also in der Funktionsauswahl erst einmal wenig Wahlmöglichkeiten, denn wir benötigen sie erst einmal für den Bootloader! Das kann man zwar im Programmablauf (später) ändern- wollen wir aber nicht machen, da wir auch evtl. die Steckerbelegung (nach dem Programm-Laden) ändern müssten.

Das wollen wir aber nicht - also müssen wir von den 64 verfügbaren Pins schon mal die beiden abziehen, weil wir sie für die Programmierung (dauerhaft) benötigen. Sie stehen also zur Loksteuerung später nicht zur Verfügung!

Um uns ganz zu verwirren, sehen wir zwei GELBE Striche im Schaubild, die uns zu den 6 Pins des ISP-Steckers führen. Über diesen haben wir den Bootloader gefüttert. Wir sind also nicht an den PORT-E gegangen (wo ja PE0 und PE1) normal anliegen, sondern sind an den ISP- Stecker, der ebenfalls PE0 und PE1 als Stifte herausführt. Es ist hier also durch Leiterbahnen eine elektrische Verbindung in der Platine geschaffen worden. Welche Pins man abgreift, hängt von den verwendeten Steckern ab. Programmierung macht man immer über einen genormten ISP-Stecker, Betrieb aber über PORT-Stecker!

Bei unserem Hallo- Programm haben wir aber gar nicht umgeschaltet, ich habe einfach die Stifte PE0 und PE1 vom ISP-Stecker verwendet ... um die Sache einfach zu halten!

Für unser Hallo-Programm habe ich also (noch) die Kommunikationsschnittstelle UART0 verwendet. Das werden wir aber in Zukunft nicht mehr tun - wir werden ab sofort die gesamte Kommunikation (zur Loksteuerung) über UART 1 ablaufen lassen! Hieran werden wir also das WIZNET 610wi anschliessen.

Deswegen benötigen wir also nun einen Stecker, der für PORT D konfiguriert wird. Wie das geht habe ich Euch zuvor schon gezeigt. Also bitte ein Flachband-Kabel abschneiden, ca. 15 cm lang und mit einer Buchse im Schraubstock verbinden.

Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » So 10. Nov 2013, 19:42

Upps - habe in obigem Schaubild im Beispiel PORT D falsch gezählt, hier nun die korrigierte Fassung:
2561 - UART Pin Belegungen (korrigiert).jpg
Man zählt immer vom weissen Kreis weg:

Weißer Kreis umrandet immer PIN0, in der Reihe darüber liegt dann PIN1, rechts neben PIN0 in gleicher Reihe liegt PIN2, ..., folglich kann PIN7 nur in der oberen Reihe mit PIN1 liegen und nicht in der unteren Reihe mit PIN0 ...! Gerade Zahlen also immer in der Reihe des Weissen Kreises, Ungerade Zahlen darüber!

LG vom Karl

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Mo 11. Nov 2013, 00:31

Hallo zusammen,

wir bereiten nun noch die Anschlüsse für die H-Brücke vor. Dazu vorab einiges an Basiswissen:

(Anbei ein Foto unserer H-Brücke)
Anschluss-Schema H-Bruecke.jpg
Wir sehen links die 4 Anschlüsse der (a) Gleichstrom - Zufuhr (2 Leitungen) und (b) die Ableitung (2 Leitungen) des Pulsweiten-modulierten Stroms (PWM) an den (die) Motor(en).

Magenta gekennzeichnet sind die 3 Steueranschlüsse (rechts in der angedeutenen Steckerumrandung):

1. Die PWM - Signale, die vom MC 2561 generiert werden und in den PWM-Eingang der H-Brücke eingespeist werden, um entsprechend die PWM-Spannung den Fahrstufen entsprechend den/dem Motor(en) zuzuführen. Die PWM kann zwischen 0% und 100% "moduliert" werden.

2. Das "An-Aus" - Signal ("Reset"), das immer auf 5 Volt vom MC gelegt werden muss, damit die H-Brücke sich einschaltet. Wenn die Lok steht, wird dieser Anschluss vom MC auf LOW (= 0 Volt) gezogen.

3. Der Richtungs-"Steueranschluss", der vom MC je nach Fahrtrichtung auf 5 Volt (HIGH) oder 0 Volt (LOW) gesteuert wird. Die Umschaltung erfolgt erst, wenn die PWM auf 0% steht, damit Motor und Getriebe nicht überlastet werden!

Diese 3 Anschlüsse müssen an das Board des MCs angebunden werden - folgt im nächsten Post. Auf jeden Fall müssen wir also auch für die H-Brücke eine Flachband-Verbindung mit Buchse herstellen - 15 cm empfohlene Länge.

Wichtig bei allen Verbindungen zwischen den Boards: Alle Boards müssen über eine gemeinsame Masse-Verbindung gleiches Potential erhalten. Darum ist in allen Steckern auch ein Masse-Pol (Minus) enthalten. Diesen verwenden wir automatisch mit. In den Fotos kennzeichne ich die Plus und Minus Pole nicht extra, sondern konzentriere mich lediglich auf die Steuerleitungen.

Eine Besonderheit bei der H-Brücke: Sie braucht auch noch 5 Volt vom MC-Board - ist aber auch kein Problem, weil ja in allen Steckern auch ein 5 Volt Pol (PIN) enthalten ist. Ich werde natürlich auch die Masse und 5 Volt Verbindungen an entsprechender Stelle erwähnen.

Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Mo 11. Nov 2013, 07:08

Hallo zusammen,

nun der Gegenpart zur H-Brücke auf dem MC-Board - wieder eine entsprechend gekennzeichnete Skizze mit eingeschlossenem Photo:
2561 PWM - Licht Belegungen.jpg
Bevor wir die Skizze besprechen, noch einige Worte vorweg!

Die Anschlüsse des MCs (Pins in den Ports) sind nach Benennung durch den Hersteller gruppiert. Wir finden also den Port B, Port C, Port D etc. im obigen Photo auf der Platine gekennzeichnet. Die Pins sind also nicht unbedingt nach ihren Funktionen für unsere Lokomotive gruppiert.

In anderen Worten: Wenn wir eine H-Brücke mit dem MC-Board über Kabel verbinden, wäre es eher Zufall, wenn wir lediglich ein Kabel mit zwei Buchsen an den jeweiligen Enden benutzen könnten, um eine 1:1 Verbindung herzustellen. Das wird nicht gehen!

Stattdessen sehen wir im Post zuvor, dass zwar ein Kabel mit einem Stecker von der H-Brücke abgeht, aber die Funktionsausgänge zur Ansteuerung der H-Brücke auf dem MC-Board auf zwei Ports (also 2 Stecker, PORT B und PORT D) verteilt sind!!!

Unsere Flachbandkabel erhalten also immer nur eine Buchse an einem Ende, die Drähte im anderen Ende müssen mit Drähten aus anderen Flachbandkabeln, die auf dem MC-Board eingesteckt werden und ebenfalls nur eine Buchse haben, zusammengelötet werden.
Es ist unmöglich ein MC - Board so zu entwerfen, in dem wir von Anfang an Flachbandkabel verwenden, die an beiden Enden direkt Buchsen haben und diese Boards nur noch zusammengesteckt werden! Wir werden gleich sehen, warum das so ist.

Schauen wir uns einmal an, wo die Anschlusspunkte für die H-Brücken auf dem MC-Board liegen - wir konzentrieren uns dabei auf die H-Brücke (2) (ROT) zuerst:

Wir erinnern uns, dass wir pro H-Brücke 3 Steuerleitungen benötigen: "PWM", "EIN-AUS" und "RICHTUNG". Wir erkennen im Bild oben, ich habe mich entschieden, dass die PWM von Pin "PB4" in "Port B" geliefert werden soll.
Es ist die Spezial-Funktion "OC2A", die wir benötigen. Dahinter verbirgt sich, dass dieser Pin genau die PWM erzeugen kann, die wir für die H-Brücke benötigen. Wer sich ein wenig auskennt weiss, dass auch noch andere Pins eine PWM erzeugen könnten (nämlich alle Pins, die eine Funktionskennzeichnung OCxA, OCxB oder OCxC tragen). Es ist aber meine Entscheidung für OC0A, warum kann ich an dieser Stelle nicht weiter erklären, das würde den Rahmen sprengen!

Da wir große Loks mit zwei Motoren steuern wollen, habe ich zwei H-Brücken vorgesehen. Eine weitere H-Brücke (1) (GRÜN) soll anschliessbar sein. Als PWM - Ausgang habe ich Pin PB7 in Port B mit der Funktion OC0A ausgewählt. Es kommen also sowohl die PWM (1) für die H-Brücke (1) als auch die PWM (2) für die H-Brücke (2) aus dem gleichen Port B - allerdings aus verschiedenen Pins! Damit kann ich die Geschwindigkeit der beiden Motoren unterschiedlich regeln, da jeder OCxA - Pin individuell aus der Software ansteuerbar ist!

Wir halten also ganz allgemein fest:
Alle PINs auf dem Board, die also den Ports A - G zugeordnet sind, lassen sich in unterschiedlichster Weise individuell ansteuern. Bestimmte Basis-Funktionen pro Pin sind vom Hersteller fest vorgegeben, danach müssen wir uns richten.
Wir haben also keine freie Wahlmöglichkeit, aus einem der 64 Pins jede beliebige Funktionalität herauszuholen, wir müssen von vorn herein bei der Verteilung der Lokomotiv- Funktionen auf Pins ein wenig nachdenken!

Schauen wir uns einmal den GELBEN PORT C an: Er beinhaltet die PINs PC0, PC1, ..., PC7. Wir erkennen auch, dass diese PINs wenig Zusatz-Funktionen haben, wir finden z.B. an keinem dieser Pins eine Bezeichnung OCxy!
Das heisst, diese Pins können nur "einfache" Schaltvorgänge wie "LICHT AN" oder "LICHT AUS" übernehmen. Es ist also nicht möglich, dass sie (auf einfache Weise) eine PWM für eine H-Brücke generieren. Also habe ich mich deshalb entschieden, an die PINs des PORT C "Lichtfunktionen" (also lediglich "AN-AUS" Funktionen) zu legen! Dazu aber später einmal mehr.

Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Fr 15. Nov 2013, 23:26

Hallo zusammen,

ein kleines "Intermezzo" zu dem vorherigen Thema H-Brücke und Ihre Ansteuerung (bevor es hierzu am Wochenende weitergeht).

Anbei eine detaillierte Darstellung zur PulsWeitenModulation (PWM) - keine ganz so leichte Kost - aber vielleicht für unser Verstehen zur Motor-Steuerung durch einen Mikroprozessor ganz hilfreich. Schauen wir uns mal das folgende Schaubild an:
PWM-Generierung-85.jpg

Wir sehen 4 Quadranten (mit gelben Punkten 1- 4) gekennzeichnet.

Im ersten Quadranten (links oben) sehen wir einen Graphen, der die Zusammenhänge zwischen Spannung und Strom und der daraus resultierenden Leistung bei analoger Gleichstromsteuerung mittels eines Gleichstromtrafos mit klassischem Regler darstellt. Bei allen nachfolgenden Interpretationen bitte immer folgendes im Kopf behalten:

Eine Lok (ein Motor) wird in ihrer Geschwindigkeit durch die zugeführte LEISTUNG bewegt - nicht durch die Spannung! Auch nicht durch den Strom. Erst aus dem Produkt von Spannung und Strom entsteht die Leistung, mit der Energie in den Motor gebracht wird!

Wenn wir also an einem Gleichstromtrafo die Spannung hochdrehen, um die Lok zu bewegen, dann funktioniert das nur, weil der Spannung auch (automatisch) ein Strom folgt. Die Höhe des Stromes bestimmt der Verbraucher (z.B. der Motor, der aufgrund seiner typischen Eigenschaften einen inneren, resultierenden Widerstand hat).
Das Produkt aus beiden, das in die Lok fliesst, bestimmt dann die Drehzahl, mit der der Motor sich dreht.

Vereinfacht wird angenommen, dass sich Spannung und Strom auch beim Motor entsprechend des Ohm'schen Gesetzes verhalten - also der Strom proportional zur angelegten Spannung steigt oder fällt. Belastungen des Motors vernachlässigen wir!

Wenn wir nun vergleichend 3 Fahrtreglerstellungen am Gleichstromtrafo mit angenommenen (unrealistischen) 255 Fahrstufen betrachten (beispielhaft die Fahrstufen 44, 100 und 255), dann lässt sich folgendes sagen:

Der Fahrstufe 255 ist eine maximale Leistung von 57,6 [VA] (vereinfacht = 57,6 [Watt]) zugeordnet - also volle Pulle! Die 57,6 Watt ergeben sich aus 24 Volt angelegter Spannung, die wiederum 2,4 Ampere in den Motor ziehen. Das Produkt beider physikalische Größen ist dann die Leistung von 57,6 [VA].

Nun drehen wir den Fahrtregler zurück, auf die Fahrstufe 100! Damit beabsichtigen wir die Lok mit einer Geschwindigkeit von 39,2% der maximalen Geschwindigkeit fahren zu lassen.

Es wäre nun falsch anzunehmen, dass dann die Spannung auf 100/255 * 24Volt=9,41[V] zurückfallen muss.
Da die Leistung die Geschwindigkeit der Lok bestimmt (und nicht die Spannung allein) muss die Fahrstufe der Leistung zugeordnet werden, denn die bewegt die Lok!

Um aber die Lok auf eine Leistung von 100/255*57,6[VA]=39,2% einzuregeln, dürfen wir den Spannungsregler nur auf 15 [V] (anstelle der zuvor vermuteten 9,41 [V]) zurückregeln. DENN: Der Strom vermindert sich ja ebenfalls - proportional zur verminderten Spannung (also geht die Leistung im Quadrat als Produkt von beiden zurück)!

Wir merken uns also, dass wir immer die Leistung als Ergebnis des Produktes "Spannung * Strom" betrachten müssen.
In unserem linken Quadranten werden drei verschiedene Leistungen bei verschiedenen Spannungen als unterschiedlich große FLÄCHEN beispielhaft dargestellt (17.4%=Gelbe Fläche, 39.1%=Rote Fläche und 100%=Grüne Fläche). Wir können nun die 100% Fläche (maximale Leistung) als maximale Fahrstufe 255 willkürlich definieren, dann entspricht die Fläche (Leistung) von 39,2% der Fahrstufe 100 und die Fläche von 17,4% der Fahrstufe 44 - immer proportional über Dreisatz gerechnet!

Nun konzentrieren wir uns auf den Quadranten 2, der auf der Senkrechten die am Motor angelegte Spannung zeigt und auf der Waagrechten ein willkürliches Zeitintervall von 0,25 [ms] (MilliSekunden). Der 2. Quadrant leitet nun die Grundlagen der PWM Steuerung ein.

Die "Leistungs"-Flächen aus dem 1. Quadranten (analoger Trafo) übernehmen wir nun mit ihren exakten Flächen in diesen Quadranten, formen sie aber bei gleichbleibender Fläche so um, dass sie immer senkrecht 24 Volt "hoch" sind, das heisst, wir legen nun konstant 24 Volt an den Motor an. Demzufolge wird er nun auch 2,4 Ampere ziehen. Somit werden dem Motor dann also 57,6 VA Leistung (100%) zugeführt.

Um nun dennoch auch noch geregelte Teilleistungen (Teillast) zuführen zu können, sorgen wir nun dafür, dass die 100% Leistung nur eine prozentuale Zeitdauer anliegt - und zwar prozentual exakt solange, wie die zugeführte Teilleistung prozentual groß sein soll.
Während also die grüne Fläche (100%) die volle Leistung symbolisiert und 100% der Zeitdauer im betrachteten Zeitintervall anliegt, liegt die rote Leistungs-Fläche nur noch 39,1% der Zeitdauer an, die gelbe LeistungsFläche nur noch 17,4% der Zeitdauer.
Die restlichen Zeitdauern (100% - 39,1%) und (100% - 17,4%) im betrachteten Zeitintervall schalten wir die Spannung vom Motor ab.

Da ein Motor immer eine Rotor-Masse mit einem entsprechenden rotatorischen Massenträgheitsmoment besitzt, bleibt dieser in der spannungslosen Zeit nicht einfach abrupt stehen, sondern rotiert aufgrund seiner Massenträgheit nahezu unverändert weiter. Ist das betrachtete Intervall - die Zykluszeit, in der die Spannungs- Ab- und Zuschaltung erfolgt, sehr kurz, ist die Beschleunigung und Abbremsung nahezu gleich NULL - der Motor läuft für den Betrachter absolut gleichförmig.

Da aber die zugeführte Teil-Leistung (Gelbe und Rote Fläche) natürlich geringer als 100% ist, dreht der Motor auch mit entsprechend geringerer Drehzahl, weil auf eine lange Zeitdauer gesehen konstant nicht die volle Energie zugeführt wird, um ihn auf voller 100% Drehzahl zu halten.
In der Auswirkung wird also durch pulsierendes Zu- und Abschalten der Leistung der gleiche Effekt erzeugt, wie wenn eine geringere Spannung (und folglich auch Strom) beim analogen Trafo zur Leistungsregelung eingespeist wird.

Jetzt kommen wir zu der spannenden Frage, wie man mit einem Mikroprozessor eine regelbare pulsierende Leistung an einen Motor anbringt. Um das zu verstehen, müssen wir uns auf den Quadranten 3 (links unten) konzentrieren:

In der oberen Hälfte des 3. Quadranten sehen wir einen blauen Sägezahnverlauf. Dieser ist absolut gleichförmig, alle Sägezähne sind gleich hoch und haben die gleiche Form. Auf der linken Seite sind sie schräg aufsteigend, auf ihrer Rückseite senkrecht abfallend. Die Zykluszeit eines jeden Sägezahns beträgt genau 0,25 [ms]. ;)

Dieser Sägezahnverlauf ist natürlich nur eine grafische Darstellung von Abläufen, die im Mikroprozessor ablaufen. Der Sägezahnverlauf beschreibt die Funktionsweise eines sogenannten Timers. Ein Timer (http://de.wikipedia.org/wiki/Timer) wird durch einen Zähler (eine Speicherzelle) umgesetzt, deren Inhalt (eine Zahl) man fortwährend um die Zahl EINS erhöht. Wenn die Speicherzelle eine Breite von 8 bit besitzt, dann kann man alle Zahlen darin abspeichern, die sich mit 8 bit (binär) darstellen lassen, dies sind die Zahlen 0 ... 255!

Wenn man nun in 0,25 [mS] den Zähler einmal komplett von 0 auf 255 aufaddieren lässt und die Werte grafisch im Zeitverlauf über 0,25 [mS] Intervalle aufträgt, entsteht genau dieser Sägezahnverlauf. Wenn der Zähler die 255 erreicht "stürzt" er mit der nächsten Addition auf Null ab, das nennt man einen Überlauf! Unmittelbar nach dem Überlauf beginnt sofort wieder der nächste Zählvorgang.

Fortsetzung folgt!

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Sa 16. Nov 2013, 00:27

Noch einmal unser Bild:
PWM-Generierung-85.jpg
Wir betrachten den weiterhin den 3. Quadranten:

Es liegt nun nahe, dass wir mit dieser Timer Funktion unsere PWM generieren wollen.
Wir halten noch einmal fest: Der Timer hat einen Überlauf bei 255, das ist genau am Ende der 0,25 [ms] Periode - er stürzt auf 0 ab (der "Überlauf") und er beginnt in einer neuen 0,25 [ms] Periode wieder hochzuzählen.

Jetzt stellen wir uns noch folgendes zusätzlich vor:
Von unserem Smartphone übermitteln wir eine Zahl zwischen 0 und 255 an den Mikroprozessor - z.B. die Zahl 100 repräsentativ für die Fahrstufe 100. Diese Zahl übernimmt der Mikroprozessor in eine weitere Speicherzelle, die er permanent mit dem aktuellen Timerwert (die ja andauernd hochzählt) vergleicht.

Wenn nun der sogenannte Komparator http://de.wikipedia.org/wiki/Komparator erkennt, dass der Timer genauso groß geworden ist, wie der Wert in der zusätzlichen Speicherzelle (unsere übermittelte Fahrstufe 100), schaltet dieser einen Ausgang an unserem Mikroprozessor von vormals HIGH auf LOW. Dieser Ausgang (in diesem Bild http://www.gartenbahntechnik.de/forum/d ... &mode=view OC2A oder OC0A) ist genau der Ausgang, den wir mit unserer H-Brücke verbunden haben und der auf der H-Brücke als PWM gekennzeichnet ist.

Dadurch wird der Motorausgang der H-Brücke ausgeschaltet (ebenfalls auf LOW gezogen).

Wenn der Timer übergelaufen ist und wieder auf Null zurückfällt wird dieser PWM- Ausgang wieder auf HIGH gelegt ... und der Motorausgang der H-Brücke wird wieder eingeschaltet.

In unserem Schaubild (3. Quadrant) wird dieser Umschaltpunkt bei der Fahrstufe 100 durch den Trigger 100 äquivalent zur der binären Ziffernfolge 0110 0100 ausgelöst.
Wenn wir nun die Zeitpunkte des Umschaltens mit HIGH und LOW eine Ebene tiefer auftragen und die Schnittpunkte der grünen (Sinus-) Kurve (hier lediglich zu Anschaungszwecken eingezeichnet) als Trigger im Vergleich mit den mit den Timerwerten verwenden, erzeugen wir PWM Säulen darunter. Genau sie bestimmen mit ihrer Fläche, die Einschaltdauer des Motorausgangs an der H-Brücke.
Somit haben wir also eine Methode gefunden, wie man mit einem Timer im MC und einem Vergleichswert aus unserem WLAN Smartphone (unsere Fahrstufe) eine PWM erzeugen, die genau diese übersandte Fahrstufe in eine gewünschte Motordrehzahl mittels PWM Leistungssteuerung umsetzt!

Diese technische Umsetzung der PWM Generierung über einen Timer ist aber nicht spezifisch für unsere Projekt.
Auch die MCs auf den DCC-Decodern machen dies genauso wie gerade gezeigt. Im übrigen, wenn immer man auf einfache Weise Gleichstrommotoren in ihrer Leistung mit einem MC steuern möchte, geht man genau so vor. Das lernt ein auch Elektronikstuden an der UNI - denn die ganze Welt macht es so!

Im Quadranten 4 habe ich der Vollständigkeit halber noch einmal nachgewiesen, dass mittels PWM - Steuerung nun der gleiche Effekt wie durch die Handregelung beim Analogtrafo erzielt wird. Aber der lässt sich ja bekanntlich nicht vom Smartphone aus steuern :mrgreen:

Das wär's für heute Nacht - am Wochenende geht's weiter, da schliessen wir unsere H-Brücke an und bringen einen Motor zum Drehen - und regeln diesen natürlich vom Computer aus!

LG vom Karl

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Sa 16. Nov 2013, 10:08

Hallo zusammen,

obigen Exkurs braucht man natürlich nicht zu verstehen, wenn man lediglich im Projekt WLANCROC nachbauen möchte.
Ich hatte ja fest versprochen, dass auch der Laie (aber mit Löterfahrung) mit meiner Anleitung seine eigen WLAN-Lok ausrüsten kann.

Dennoch möchte ich an dieser Stelle noch einige tiefergehende Erläuterungen zu Anwendungen der PWM und unserem MC 2561 geben:

Timer sind das Salz in der Suppe bei MC-Programmierungen, mit Ihnen steuert man alle unterlagerten Grund-Funktionen, die in irgendeinerweise einfache, sich wiederholende Abläufe darstellen. Einige Aufzählungen:
  • PWM-Motoren-Leistungsregelung - hatten wir schon oben
  • Servo-Ansteuerungen- hier benötigt man auch eine PWM, deren %-Anteil (HIGH) man zwischen 5% (Linksanschlag) und 10% (Rechtsanschlag) variiert. 7,5% wäre also die Mittelstellung. Die Zykluszeit ist allerdings um den Faktor 100 größer, ungefähr 20 [ms] anstelle 0,25 [ms]. Servo-Entkuppler in der Lok benötigen also genau einen solchen Timer
  • Ditch Lights (also auf-und abschwellende LEDs an der Frontseite von amerikanischen Loks oder der Glühbirneneffekt bei Bahnschranken- Andreaskreuzen) benötigen ebenfalls einen Timer. Die Grün eingezeichnete SINUS-Kurve im Quadranten 3 ist ein schönes Beispiel, wie man auf - und abschwellende Rechtecksignale mit varierender Prozentzahl erzeugen kann. Was bei Ditch-Lights oft verwirrt: Man braucht erst einmal die PWM-Erzeugnung (also einen PWM-Timer - wie oben beschrieben) und dann noch einen weiteren Timer, der die Trigger-Grösse, die bei der Motorsteuerung vom Smartphone kommt, in sich noch einmal an- und abschwellen lässt ... ;)
  • Helligkeitsregelungen, um 5 Volt Glühlampen an 19 Volt Spannungsversorgung zu hängen - dabei muss man dafür sorgen, dass die PWM maximal 7% HIGH am Ausgang erzeugt ... (jemand eine Idee - warum 5[Volt]/19[Volt]= ~25% bei weitem zuviel sind ... :mrgreen: )
  • RGB-Lichterketten http://www.youtube.com/watch?v=QUA0f6eiMsw, die einige völlig wahnsinnig gewordene Menschen an ihrem Haus anbringen :mrgreen: um individuelle farbliche Beleuchtungen von ihrem Smartphone zu erzeugen - hier braucht man natürlich 3 Timer im Mikroprozessor - für jede Farbe ROT, GRUEN und GELB einen seperaten ... - so wie man drei Schieberegler am Smartphone braucht!
  • ...
Wichtig ist auch zu wissen, dass man Timer durch reine Software-Programmierung in einem MC erzeugen und ablaufen lassen kann. Also kann man theoretisch bei einem MC mit x Ausgängen auch x Timer erzeugen. Das stimmt aber nur bedingt, da sich jeder Ausgang (und seine dahinterliegende Programmierung) programmtechnisch Rechenzeit mit einem der anderen Ausgänge teilen muss. Sie beeinflussen sich dann also gegenseitig, was insbesondere bei zusätzlichen Programmanforderungen (z.B. Generierung eines Sounds) zu erheblichen Timing Verzerrungen führen kann. Und wer will schon sein Ditch-Light beim Sound-Aufruf eines Horns auf einmal stottern sehen - oder die Drehbewegung eines Pantografen- Servos ruckeln?

Um das zu verhindern haben gute Prozessoren mehrere Timer an Board, die in HARDWARE Strukturen realisiert sind, nur noch durch Software eingestellt (parametrisiert) werden und selbständig ihren Dienst versehen, ohne Rechenzeit in Anspruch zu nehmen. Allerdings hat dies auch seinen Preis - die Ausgänge sind nicht mehr variabel, darum muss ein Programmierer sich vor der Zuorndnung zu Funktionen klar machen, wo die Timer-Augänge am Chip / auf der Platine angeordnet sind (Ihr erinnert Euch :D ...?)
Die Qualität (Mächtigkeit) eines MCs lässt sich sehr gut an Hand der verfügbaren Timer ablesen - der Preis ist oft entsprechend! :evil:

Unser MC2561 hat 6 völlig frei konfigurierbare Timer an Board, wobei man sich mit einigen Tricks aber durchaus viel mehr PWMs konfigurieren kann! Das zu erläutern, würde hier den Rahmen völlig sprengen. Wer das nachlesen möchte: Seiten 118 - 194 in http://www.atmel.com/images/doc2549.pdf :twisted:

Nur noch soviel: 2 Timer arbeiten mit 8 bit Zählern (zählen also bis 255), 4 Timer haben 16bit Timer, zählen also bis 65.535. Die 16-bit Timer haben noch eine Menge zusätzlicher Finessen, die wir teilweise aber nicht benötigen. Für die Motorsteuerung benötigen wir lediglich 8-bit Timer - wer will schon 65.535 Fahrstufen regulieren - kann niemand :roll: ... für Servos und Ditch Lights sind aber die 16bit Timer viel besser geeignet!

Wichtig auch zu wissen: Mit unserem PCA 9622 Board (z.B. für 16 LEDs) besitzen wir eine Erweiterung um 16 !!! Timer, mit den wir 16 verschiedene LEDs in jeder beliebigen Helligkeit ansteuern können. Allerdings ist hier die PWM Frequenz mit 97kHz - also für unser H-Brücke nicht geeignet!

Es gibt nur eine weitere Einschränkung bei den Timern - man kann sie nur in vorab festgelegten Frequenzbereichen (mit Vielfachen von 8) laufen lassen. Wenn man Zwischenfrequenzen nutzen möchte, reduziert sich die Anzahl der PWM (Fahr-)stufen. Wenn wir also nicht mit 4kHz (=0,25 [ms]) die Motoren ansteuern wollen, dann ist die nächst höhere Frequenz 32 kHz (*Faktor 8), um mit vollen 255 Fahrstufen zu steuern (256 Fahrstufen, wenn man die Fahrstufe 0 hinzuzählt), die nächst tiefer 500Hz.
Welcher DCC-Hersteller mit welcher Frequenz die PWMs laufen lässt ist einerseits eine MC-Frage, andererseits eine Philosophie-Frage, welche PWM für welchen Motor am besten ist.

Warum ist das wichtig? Nun - ganz einfach: 4kHz Frequenz lässt einen Gleichstrom-Motor für den Menschen hörbar "fiepen" - der Mensch hört bis 10kHz solche Geräusche sehr deutlich. Bei einer modernen E-Lok ist das Geräusch willkommen - bei einer Dampflok gar nicht. Meine V60 arbeitet (ungefähr) mit 4 kHz - da hört man die PWM deutlich.

Nicht jede H-Brücke verträgt aber 32kHz, unsere verträgt laut Datenblatt 40kHz (habe ich aber noch nicht ausprobiert). Für unsere ersten Versuche werde ich es bei 4 kHz belassen - es hat den Vorteil, dass wir auch hören, wenn der Motor anläuft.

Gerüchteweise sollen Glockenankermotoren http://de.wikipedia.org/wiki/Glockenank ... -Maschinenmit niedriger PWM schlecht laufen ..., sogar zerstört mechanisch werden, weil ihre rotatorische Massenträgheit zu gering ist - > Lagerschaden durch zuviel Vibrationen beim Ein-Und Ausschalten der PWM, die nicht "überrollt" werden! 32kHz ist aber nach Meinung aller Forenschreiber und Experten bei weitem ausreichend.

Das war's erst einmal mit der Theorie. Es geht nun mit dem Zusammenbau weiter!

LG vom Karl

papabaer465
User
Beiträge: 60
Registriert: Di 15. Jan 2013, 20:53
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von papabaer465 » Do 21. Nov 2013, 17:56

hiho Karl,

ich sitze seit Samstag mit angespitztem Lötgewehr hier und warte...

wo klemmts denn nune??? :lol:

lg Thomas

IPTRAIN
Senior
Beiträge: 202
Registriert: Di 15. Jan 2013, 20:20
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von IPTRAIN » Do 21. Nov 2013, 20:58

papabaer465 hat geschrieben:hiho Karl,

ich sitze seit Samstag mit angespitztem Lötgewehr hier und warte...

wo klemmts denn nune??? :lol:

lg Thomas
An meiner Steuererklärung, die ich am Samstag / Sonntag noch fertig machen musste :mrgreen: ...! Und an einem Hausverkauf, den ich nebenbei noch durchführe ... und an meinem Job.

In das vorherige Schaubild habe ich übrigends 6 Stunden investiert - nur damit man 'mal einmal abschätzen kann, wieviel Arbeit meinerseits in diesem Projekt steckt.

Am Wochenende geht's weiter!

LG vom Karl

papabaer465
User
Beiträge: 60
Registriert: Di 15. Jan 2013, 20:53
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Re: Das MC Board 2561 und seine Anbindungen

Beitrag von papabaer465 » Fr 22. Nov 2013, 11:38

hi,

also höhere Gewalt :?

kenn ich, ich bekomm auch immer ein nettes Spendenaufrufschreiben von denen... jedes Jahr aufs neue... :lol:

meine Anbindung der gesamten Datenstrecke hab ich nun auch ohne Trägerboard hinbekommen, ein einfacher kleiner Widerstandsspannungsteiler in die TX/RX-Leitung und es funktionierte prächtig.

Außerdem konnte ich klären, warum meine Wiznets scheinbar nicht mehr funkten... ich hatte meine komplette Infrastructur doch schon eingerichtet, die waren bereits als Client im SSID WLAN-DL unterwegs... da kann ich lange drauf warten dass die "aktiv" funken... ein einfaches Scanning-prog hätt mir das gezeigt...
wenns interessiert, würd ich das auch gern auch zeigen, ich muss das ja nun nochmal machen.

lg Thomas

Antworten
[phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1275: count(): Parameter must be an array or an object that implements Countable

Zurück zu „Alles rund um die Hardware“