Home

Gertboard-Handbuch deutsch

image

Contents

1. 14 Druckschalter Dusbbuttons a KH nennen 15 Lage der I O Ports auf dem 8 11 x6 16 Testen der Druckschalter pushbuttons 17 Seel TEE 19 Sehaltertest in Python uu u BR nahe 19 00 20 Test der LEDS EE 21 Test der LEDS in Python aan 22 Test der Ein Ausgabe I Q LLL n i u n aaa aaa l6 R ARAR 23 Testvorrbutleg in C C uuu u een ee ne ea 24 Test von butled in Python 24 Open KollektorTreiber A ee een 24 Test des Open kKollektor Treibers c 1111222102111 111111 1 1111111 8 a v1 1n 25 Test des Open Kollektor mm 26 Test des Open Kollektor in Dvtbon 26 MWiotorsCopirol a iu E 27 Test des Motor Controllers a 28 M tortestiM EE 29 M tortest in Python heran ASAS D 30 motor rg py Software PWM 30 motor vvp py Hardware PWM 31 Digital zu analog und analog zu digital Konverter
2. e s r 3 Bot 2011 Y IFEEVEEEZS F l to V Aska gt Ka d 432 S 4 w se l 1 H Le Bild 16 Verdrahtungsschema um die Open Kollektor Treiber zu testen Rechts ist eine kleine Testschaltung aus zwei LEDs und einem 90 Q Widerstand Eine 9V Batterie dient als Stromversorgung Sie werden sich wundern warum der Pluspol der Stromversorgung mit dem Open Kollektor Treiber verbunden werden muss ber das RPWR Pin Der Grund ist wenn die Schaltung eine Induktivit t ent h lt z B einen Motor oder ein Relais und die Spannung abgeschaltet wird kann die Induktivit t eine Spannung am RLYn Pin induzieren die h her sein kann als die Spannung der externen Stromversor gung Der Chip selbst hat eine interne Schutzdiode die das RLYn Pin mit RPWR verbindet das ist die Diode oben im Bild 15 Das erm glicht dem Strom zur positiven Seite der Schaltung zu flie en Die Energie wird abgeleitet und eine Besch digung der Schaltung verhindert Test des Open Kollektor in C Der ocol Test ist sehr einfach Zuerst werden die ben tigten Verbindungen auf dem Bildschirm ange zeigt mit Ihrer externen Schaltung und Stromversorgung und anschlie end wird setup_io aufgeru fen um die GPIO Schnittstelle f r die Benutzung zu initialisieren und setup_gpio um das Pin GPIO4 als Ausgang zu ffnen mit den Kommandos INP_GPIO 4 OUT_GPIO 4 wie auf Seite 13 beschrieben Dann benutzt das Programm GPIO_SETO und GPIO_CLRO siehe Sei
3. 32 Digital zu analog Konverter D A a aa 32 Analog zu digital Konverter 33 Testen der D A und A D Konverter uueeeeceseaanenenasnnnnnnnnnnnnnnnnnennnnnnnnnnnnnnnnnnnnnnnnnnnnnnsnnnnnnnansnnnnannnnn 33 Test der D A und A D Wandler in C nn 35 E ER Saa LU A E TT 36 dad en UL p gan con 36 D A und A D Tests in Dvtbon 36 Ee Be 36 get Ee EE 37 IB UE 37 Kombinierte Tests nee a benennen 38 A D und Motor CGTTEO T 2 2 2 3 s s nen 38 RISIKEN 39 Potmot Test in Python E 39 Oe Bnipiepsn beispiel 40 Decoder Jes IC een Deere 40 ATmega Mikreocontroller s 8 H 41 Programmierung des ATmega 41 Arduino Pins auf dem Gertboard a 42 Ein paar Programme sketches mit denen Sie starten k nnen 42 Hochladen von Programmen unter Benutzung des SPI Busses 43 Programm gll 43 Programm Button Schalter 44 Programm Analoglnput 46 Pr
4. E e tE L ui UOTE WI Bech nh Ei sl PP PIPPI ze IH m man on 5 he Eril k r ibgurd 21 det ZZ D a ni 3 Bild 28 Verdrahtungsschema f r das Programm Blink Beachten Sie dass in diesem Schema die Verbindungen zu den SPI Pins nicht gezeigt werden Wenn Sie den Code einmal hochgeladen haben ben tigen Sie diese Verbindungen nicht l nger und k nnen die Kabel entfernen Auf der anderen Seite k nnen Sie sie auch stecken lassen wenn Sie sp ter ein anderes Programm hochladen m chten Programm Button Schalter Sehen wir uns ein anderes recht einfaches Programm mit dem Namen Button an das sich unter File gt Examples gt Digital befindet sowohl in 0018 als auch in 1 0 1 Der Kommentar am Anfang des Pro gramms lautet The circuit die Schaltung e LED attached from pin 13 to ground LED zwischen Pin 13 und Masse e pushbutton attached to pin 2 from 5V Druckschalter zwischen Pin 2 und 5V 10K resistor attached to pin 2 from ground 10K Widerstand zwischen Pin 2 und Masse Das Programm Blink l uft die LED ist verbunden aber was ist mit dem Schalter Da wie oben er w hnt der ATmega Chip auf dem Gertboard mit 3 3V l uft m ssen wir die 5V durch 3 3V ersetzen Es wird empfohlen eine Schaltung zu benutzen wie unten zu sehen wobei der Wert an Pin 2 logisch 0 ist wenn der Schalter nicht gedr ckt ist wegen des 10K pull down Widerstands und logisch 1 wenn der
5. Bild 25 Verdrahtungsschema f r das potmot Programm 38 Potmot Test in C Die main Haupt Routine daf r befindet sich in potmot c Funktionen aus gb spi c und gb_pwm c werden benutzt um den SPI Bus zu steuern zum Lesen des A D und auch den Pulswei tenmodulator zur Steuerung der Motor Drehzahl In der main Routine f r potmot werden zuerst die n tigen Verbindungen f r das Gertboard angezeigt anschlie end wird zer up io aufgerufen um die GPIO f r die Benutzung vorzubereiten Danach rufen wir setup_gpio auf um die GPIO Pins zu setzen Darin werden GPIOS bis GPIO11 zur Benutzung des SPI Busses konfiguriert indem INP_GPIO und SET_GPIO_ALT wie im Abschnitt ber die Kon verter D A und A D Test in C Seite 35 benutzt werden GPIO17 wird als Ausgang gesetzt mittels INP_GPIO und OUT_GPIO und GPIO18 wird als ein PWM gesetzt mittels INP_GPIO und SET_GPIO_ALT wie im Abschnitt ber den Motor Controller Motor Test in C Seite 29 Zur ck in main werden setup_spi und setup_pwm aufgerufen um den SPI Bus und den PWM zu konfigu rieren und den Motor bereit f r die Arbeit zu machen Nun lesen wir periodisch den A D Wandler und setzen die Geschwindigkeit und die Drehrichtung des Motors abh ngig vom gelesenen Wert Niedrige A D Werte bis zu 511 erinnern Sie sich dass der A D Chip einen 10 Bit Wert liefert und der Maximalwert 1023 betr gt f hren dazu dass der Motor B E
6. 21 Das Testprogramm l sst die LEDs in drei Mustern leuchten Die Muster werden durch eine Anzahl von globalen Arrays Array Feld von Werten gleichen Typs z B von Zahlen mit gegebenen Werten fest gelegt Die Zahl in jedem Array bestimmt welche der LEDs an dieser Stelle im Muster eingeschaltet wird daher werden die Werte des Arrays nacheinander ausgegeben um das Muster an leuchtenden LEDs zu erzeugen Jedes Muster wird zweimal durchlaufen Das erste Muster l sst die LEDs einzeln von links nach rechts leuchten Das zweite Mustern tut dasselbe aber beim Erreichen der rechten LED wech selt es die Richtung und die LEDs leuchten von rechts nach links auf Das dritte Muster startet bei der linken LED und l sst die LEDs jeweils eingeschaltet wenn die n chste LED aufleuchtet bis alle LEDs leuchten Anschlie end werden alle LEDs von links beginnend wieder ausgeschaltet Zum Schluss werden alle LEDs ausgeschaltet und das Programm ruft restore_io auf um die Hard ware auf einen definierten Status zu setzen Test der LEDs in Python Dieser Test ist f r RPi GPIO und WiringPi f r Python verf gbar Der einzige Unterschied zwischen leds rg py und leds wp py ist die Art wie die GPIO Ports behandelt werden und der Raspberry Pi Bord Revisionspr fer Im Programm wird zuerst die Raspberry Pi Bord Revision gepr ft und abh ngig vom Resultat werden die korrekten Ports f r die LEDs in einer Liste namens ports definiert Da wir die Liste
7. 55 A 8H 1equinN 1 00 ezg pieoqu o 202 89d NNOO ex d3dv3H t d30v3H L NI TVIX 0NIy v05 3qd 11 8000 504 Z Y1X 8d 1171 984 0 004 113534990394 yos SW 9080 00 1 020 101ELI0S8I 182 56
8. Es gibt 12 Pins die als Ein oder Ausgabeports dienen k nnen Jedes kann als Eingang oder Ausgang konfiguriert werden indem ein Jumper gesteckt wird Beachten Sie dass die Begriffe Eingang und Aus gang aus der Sicht des Raspberry Pi gesehen sind beim Eingang liest das Pin Daten in den RPi beim Ausgang gibt der RPi Daten aus Es ist wichtig das im Hinterkopf zu behalten wenn das Gertboard kon figuriert wird ein Ausgang vom Gertboard ist ein Eingang f r den Raspberry Pi und somit muss der Eingangs Jumper gesteckt werden 14 Raspi 3 3V input L 74xx244 Bild 8 Schaltplan f r die O Ports 4 12 Die beiden wei en Dreieck Symbole im Diagramm oben repr sentieren Puffer Sie halten logische Werte low und high in der Richtung in die das Dreieck zeigt Die Rechtecke sind Widerst nde das schwarze Dreieck mit den beiden Pfeilen ist eine LED und die kleinen hohlen Kreise sind Pins Um den Port als Eingang zum Raspberry Pi zu Konfigurieren installieren Sie den Eingangs Jumper im Diagramm als input bezeichnet dann flie en die Daten vom 1 O Punkt zum Raspi Punkt Damit der Port als Aus gang fungiert muss der Ausgangs Jumper installiert werden die Daten flie en dann vom Raspi Punkt zum VO Punkt Wenn beide Jumper installiert sind schadet das dem Bord nicht aber es arbeitet nicht richtig Sowohl im Eingangs als auch im Ausgangsmodus zeigt die LED den logischen Wert am I O Pin an Die LED leuchtet
9. 88A PA 168A PA oder 328 P in einem 28 Pin DIP Geh use Normalerweise ist der 168 oder 328 eingebaut Der Controller hat einen 12 MHz piezokeramischen Resonator an den Pins 9 und 10 Alle Ein und Ausgangspins sind auf den Stecker J25 auf der linken Seite des Bords verbunden Es gibt einen separaten 6 Pin Stecker J23 auf der linken Seite des Bords der benutzt werden kann um den Controller zu programmieren Die PD0 PDI Pins ATmega UART TX und RX sind auf Pins verbunden die sich angrenzend an die UART Pins des Raspberry Pi befinden so dass Sie nur 2 Jumper stecken m ssen um die beiden ICs zu verbinden Anm d UART universal asynchronous receiver transmitter ein IC f r die asynchrone serielle Kommunika tion zwischen Ger ten TX transmit Sendeleitung RX receive Empfangsleitung Beachten Sie dass der ATmega auf dem Gertboard mit 3 3 Volt arbeitet Das ist im Gegensatz zum Arduino System das mit 5V arbeitet das ist der Grund warum der Controller keinen 16MHz Takt hat Genau genommen liegt bei 3 3V die maximale Taktfrequenz unter 12MH2 Anm d Mehr zum Arduino Prinzip z B unter https viki attraktor org images f f1 ARDUINO Basics Teil 2 pdf VVarnung viele der Arduino Beispiele gehen von 5V f r die Schaltung aus Da wir nur mit 3 3V ar beiten m ssen Sie 3 3V statt 5V benutzen vvenn irgendvvo 5V angegeben sind VVenn Sie 5 V benutzen riskieren Sie die Zerst rung des Ch
10. Der R ckgabewert liegt zwi schen 0 und 1023 d h nur die niedrigsten least significant 10 Bits werden gesetzt wobei der Wert 0 zur ckgeliefert wird wenn die Spannung am Eingang 0V betr gt und 1023 bei 3 3V am Eingang Die Routine write_ dac hat zwei Argumente die Nummer des Kanals 0 oder 1 und den zu schrei benden Wert Der zu schreibende Wert erfordert eine Erkl rung Die MCP48xx Familie von digital zu analog Konvertern akzeptieren alle 12 Bit Werte Der IC MCP4822 benutzt alle Bits der MCP4812 ignoriert die letzten zwei und der MCP4802 ignoriert die letzten 4 Bits Da irgendeiner dieser Chips auf dem Gertboard vorhanden ist abh ngig von der Verf gbarkeit wurde write_dac so geschrieben dass es mit allen drei ICs arbeitet indem es einfach den bergebenen Wert an die D A Wandler sendet Wenn das Gertboard mit dem MCP4802 ausgestattet ist kann es nur Werte zwischen 0 und 255 verarbei ten aber dieser Wert muss in den Bits 4 bis 11 das niederwertigste Bit ist Bit 0 des gesendeten Bit Stromes bit stream stehen Somit muss die an den D A Wandler zu sendende Zahl sie muss zwischen 0 und 255 liegen mit 16 multipliziert werden was die Bits 4 Stellen nach links schiebt bevor sie an write_dac bergeben wird dtoa Um den D A Wandler zu testen fragt das Programm dt oa zuerst den zu benutzenden Kanal ab und zeigt die dazu n tigen Verbindungen an Danach ruft es setup_io auf um die GPIO Ports zu initiali sieren dann wird
11. d HE A mm ap tr TT LTD ZNZ Ko Au Fax RT118 LI n n ESS E O MS t Raspberry Pi Gertboard 21 Oct 2012 Bajs Bild 12 Schematische Darstellung der Verbindungen f r das Schalter Testprogramm Diese Darstellung ist f r den Nachbau besser geeignet als das Foto in Bild 11 Im Bild 12 zeigen schwarze Kreise und Linien welche Pins miteinander verbunden werden m ssen Nebeneinander liegende Pins werden am besten mit einem Jumper verbunden 18 Schaltertest in C Der spezielle Quellcode f r den Schaltertest befindet sich in buttons c Im Hauptprogramm ma in Routine werden zuerst die ben tigten Verbindungen f r diesen Test auf dem Bildschirm angezeigt wie weiter oben bereits beschrieben Nachdem Sie die Verbindungen hergestellt bzw gepr ft haben wird setup_io siehe Seite 12 aufgerufen um alles bereit zu setzen setup_gpio wird anschlie end aufgerufen um die GPIO Pins 1 bis 3 f r die Benutzung als Druck schalter Eing nge zu aktivieren Dazu wird zuerst das Makro INP_GPIO n wobei n die GPIO Pinnummer ist aufgerufen um diese 3 Pins als Eingang zu konfigurieren Die Pins m ssen auf high 1 gezogen werden pull up Die Schalter setzen beim Dr cken die Spannung auf 0V deshalb muss im nicht gedr ckten Zustand die Spannung hoch sein Dies wird durch Setzen von GPIO_PULL auf 2 der Wert f r pull
12. le 6 31 des BCM2835 Datenblattes oder die Onlineversion auf http elinux org RPi BCM2835 GPTOs f r weitere Informationen ber alternative Funktio nen der GPIO Pins F r eine Zusammenfassung der alternativen Funktionen die auf dem Gertboard be nutzt werden siehe Tabelle 1 auf Seite 11 29 Wir setzen den Ausgang von GPIO17 auf low um sicherzustellen dass der Motor nicht l uft und initia lisieren danach den PWM durch den Aufruf von setup_pwm Wir aktivieren den PWM durch Setzen des Modus auf wobei force_pwmO benutzt wird Da GPIO17 Eingang B des Mo tor Controllers auf low gesetzt ist f ngt der Motor an entgegengesetzt zu drehen entsprechend der Tabelle auf Seite 27 wenn die Taktrate des PWM Eingang A des Motor Controllers hoch genug ist Nun startet eine Schleife in der der PWM gestartet wird anfangs mit einer sehr kleinen Taktrate weil der Wert der an set pvm bergeben wird klein ist dann schrittweise h her bis zum Maximum welches auf 0x400 1024 in setup_ pwm gesetzt wird Danach wird der an den PWM gesendete Wert verkleinert um den Motor zu drosseln Anschlie end wird GPIO17 auf high gesetzt so dass der Motor w hrend der low Phase des PWM Signals Strom bekommt Der PWM wird im Modus PVVMO ENABLE PVVMO REVPOLAR aktiviert bedeutet eine logische ODER Verkn pfung der beiden Werte Das umgedrehte Polarisationssignal PVVMO REVPOLAR dreht das PWM Signal u
13. mehr Spannung oder Strom ben tigt wird dies ber das Gertboard geliefert Die Schraubanschl sse oben mit der Bezeichnung MOT und 1 erlauben den Anschluss einer externen Stromversorgung die die be n tigte Energie liefert Der Motor Controller leitet diese Spannung an die Anschl sse MOTA und MOTB weiter wobei die Modulation entsprechend der MOTA und MOTB Eing nge auf 15 erfolgt Wenn Sie den Motor nur in beiden Drehrichtungen ein oder ausschalten m chten kann dies einfach erfolgen indem zwei GPIO Pins mit den MOTA und MOTB Eing ngen verbunden werden Jetzt kann man den Motor steuern indem die Pins entsprechend der Tabelle 3 gesetzt werden Um die Motor Geschwindigkeit zu steuern wird die Pulsweitenmodulation PWM ben tigt Das ist eine Baugruppe die ein Rechtecksignal ausgibt wie in Bild 17 zu sehen 27 LILTLTTLT Bild 17 Ein Beispiel f r ein PWM Ausgangssignal Hier ist das Signal 50 der Zeit auf high so dass die Taktrate 50 betr gt Mit PWM k nnen Sie steuern wie lange das Signal jeweils high bzw low ist Das wird als Taktrate du ty cycle bezeichnet und in Prozent angegeben Bild 17 oben zeigt eine Taktrate von 50 das Bild 18 eine Taktrate von 25 Bild 18 In diesem Beispiel betr gt die Taktrate 25 Es gibt eine PWM auf dem BCM2835 dem Raspberry Pi Prozessor und der Ausgang kann ber die GPIO18 abgegriffen werden das ist die alternative Funktion 5 Wenn dieses Pin mit einem Eingang des Motor Con
14. 2 usw Die Druckschalter die silbernen Rechtecke mit schwarzen Kreisen sind bezeichnet mit S1 bis S3 S1 ist mit Port 1 verbunden usw Die Pins die mit Raspi in den Bildern 8 und 9 bezeichnet sind sind B1 bis B12 auf der Pfostenreihe J3 oben und rechts von den Worten Raspberry Pi auf dem Bord B1 bis B3 sind die Raspi Punkte im Bild 9 und B4 bis B12 sind die Raspi Punkte im Bild 8 Sie werden Raspi genannt weil sie die ein zigen sind die normalerweise mit den Pins der Pfostenreihe J2 verbunden sind die direkt verbunden sind mit den Pins von J1 und die dann letztendlich verbunden sind mit den GPIO Pins auf dem Raspberry Pi Die Pins die mit I O bezeichnet sind rechts im Schaltplan Bild 8 und 9 sind BUF1 bis BUF12 auf der einzelnen unbeschrifteten Pfostenleiste am oberen Rand vom Gertboard In der Gertboard Schaltung sind die O Puffer auf Seite A 2 zu sehen Die Puffer Chips U3 U4 und U5 sind gut beschriftet Es sollte klar sein dass die Ports 1 bis 4 zum Chip U3 die Ports 5 bis 8 zum Chip U4 und die Ports 9 bis 12 zum Chip U5 geh ren Die Raspi Punkte in den Schaltpl nen oben werden als die Signale BUF_1 bis BUE_ 12 links auf der Seite dargestellt und die 1 O Punkte sind BUF1 bis BUFI2 rechts der Puffer Chips Die Eingangs Jumper sind die blauen Rechtecke die mit Pl P3 P5 P7 usw bezeichnet sind rechts von den Puffer Chips und die Ausgangs Jumper sind die blauen Rechtecke die mit
15. P2 P4 P6 P8 usw bezeichnet sind rechts von den Puffer Chips Die Druckschalter S1 S2 und S3 werden separat gezeigt auf der rechten Seite in der N he der Mitte Unter den Druckschaltern sind die pull up Widerst nde zu sehen Die gepufferten 1 O Ports k nnen mit fast jedem GPIO Pin benutzt werden sie brauchen nur mit Ver bindungsdr hten verbunden zu werden Wenn Sie z B Port 1 mit GPIO17 benutzen m chten wird eine Verbindung zwischen dem B1 Pin an J3 und dem GP17 Pin an J2 hergestellt Beachten Sie dass die Druckschalter nicht mit GPIOO oder GPIO1 GPO und 1 in der Pfostenreihe J2 auf dem Bord benutzt werden k nnen da diese beiden Pins einen 18000 pull up Widerstand auf dem Raspberry Pi haben Wenn der Schalter gedr ckt wird ist die Spannung am Eingang 10000 3 x 33 x 10000 18000 1 2V 16 Das ist keine I O Spannung die verl sslich als low angesehen werden kann Die Ausgangs und Eingangs Jumper sind ober und unterhalb der U3 U4 und U5 Puffer Chips ange ordnet Die Eingangs Jumper mussten auf der Pfostenreihe unterhalb der Chips angeordnet werden auf dem Bord mit dem Text in beschriftet sie sind vom zugeh rigen Chip durch vier kleine Widerst nde getrennt und die Ausgangs Jumper mussten auf der Pfostenreihe oberhalb der Chips angeordnet werden mit dem Text out Bei n herer Betrachtung es ist ersichtlicher auf dem blauen und grauen Schema sieht man dass jede Reihe von 8 Pfosten P
16. Pin verbunden das MOTB Pin auf J5 nicht das am oberen Rand des Bords und GP18 mit MOTA auf J5 Der Motor wird an die MOTA und MOTB Schraubanschl sse oben auf dem Bord die Stromversorgung f r den Motor wird an die MOT und Schraubanschl sse angeschlossen Das ist im Bild 21 zu sehen 28 Ihre Strom versorgung ist hier Z os sp epa v n rd b n ra rat ster bi n Sa en UVVFUUTVTTUFKFVUT1 Raa m izhar u ADi o BR wl Pour wu ES pos n 1 Ai un FE FI Ire A nd i el 4 AL PB H T d Teen 993 M x x ol mp rm zi sag B D Y v ze v6 bs R I I ge 17 04 EI DA un mn 53 Hi 7 2 4 09 m FEEFEE al 3 7 Rospbe y Gef Geriboord ner 225 21 Det 2012 os 4 i z 1 w3 aa b 0 mn py d 1 A Bild 21 Das Verbindungsschema f r den Motortest Motortest in C Der PWM wird ber einen Speicherbereich gesteuert hnlich den GPIO und dem SPI Bus Dieser Spei cher ist Teil der Funktion io ingb_common c so dass der PWM entweder benutzt wird oder nicht Weiterer Setup Code befindet sich in gb pvm c mit einer zugeordneten Header Datei gb_pwm h engl header file diese Datei enth lt z B Definitionen von Konstanten Die Funktion setup_pwmin gb_pwm c setzt die Frequenz des PWM Taktes und den Maximalwert des PWM auf 1024 das ist der Wert bei dem die Taktrate des PWM 100 ist Au erdem wird der PWM ausgeschal tet Die beiden R
17. Schalter gedr ckt ist pin 2 LE _ 10K 3 31 O ND Bild 29 Empfohlene Schaltung f r das Programm Button Die Schalter auf dem Gertboard werden jedoch wie folgt benutzt 44 value ull u I GND O 3 3 Raspi Bild 30 Schaltung wie sie auf dem Gertboard benutzt wird ein zus tzlicher Widerstand von 1K um den Eingang des BCM2835 zu sch tzen Der Widerstand von IK zwischen dem Schalter und dem Raspi Punkt dient dem Schutz des BCM2835 der Prozessor auf dem Raspberry Pi wenn Sie das GPIO Pin das mit Raspi verbunden ist aus Verse hen auf Ausgang anstatt auf Eingang setzen Die Schaltung rechts vom Raspi Punkt befindet sich auf dem Raspberry Pi um den Schalter zu benutzen schalten wir einen pull up Widerstand gezeigt als Wi derstand in der Schaltung oben auf das Pin so dass der gelesene Wert logisch 1 ist wenn der Schalter nicht gedr ckt ist siehe Seite 19 f r weitere Informationen ber pull up Widerst nde Die Schalter auf dem Gertboard werden direkt mit Masse verbunden so dass es nicht m glich ist logisch 1 zu lesen wenn sie gedr ckt sind Wenn Sie einen Schalter auf dem Gertboard mit einem Arduino Programm so nutzen m chten dass logisch 1 gelesen wird wenn der Schalter gedr ckt ist ist es am besten das Pro gramm zu ndern und den gelesenen Wert zu invertieren F r den pull up Widerstand k nnen wir Vortei le aus den pull up Widerst nden im ATmega Chip ziehen Daf r
18. Test herzustellen machen Sie sich keine Sorgen verbinden Sie so viel wie m glich und starten Sie den Test Wenn er beendet ist k nnen die Jumper Verbindungsdr hte umgesteckt und der Test erneut ge startet werden Es passiert nichts Schlimmes wenn auf ein unverbundenes Pin geschrieben wird 20 52 33 LELEL R20LR2U x4C TTTTTTTTTTETTTTTTZETTTE DND IE1 1 1 1 1 4 eh k l Zu SEL In aueh PB 9 win Pl mn d ES NS gt b o i Ss 0 cola P07 14 2 Poe P05 ST mz 77 2 St re P04 en I Tum m En 83 2 P02 333 il mb el li Haz PDO b D 1 pcs LS val 05 CH 2 3 fo Raspberry P 2 ze jo Gertboord w i Vi le 21 Oct 2012 pco 9 J Ft lo mm Si b DEE w ma Bild 13 Verbindungsschema f r das LED Testprogramm Test der LEDs in C Der Code in leds c ruft zuerst setup_io um alles zu initialisieren Dann wird setup_gpio aufge rufen das die 12 GPIO Pins vorbereitet um als Ausg nge zu arbeiten alle 12 I O Ports erfordern Steue rung Alle GPIO Signale au er GPIO 0 1 4 14 und 15 werden benutzt Um sie als Ausg nge zu konfi gurieren muss zur Initialisierung zuerst INP_GPIO n aufgerufen werden wobei n die GPIO Pinnummer ist und zwar f r jedes der 12 Pins Da dieser Befehl die Ports au erdem als Eingang ffnet muss an
19. XI SW xH OW A var 221 00 guo s SINOS ZIXINOD e ax eg EIN 10H gt Ae eg H EN 310H EN 410H ZH LH TTE23SUT 4OU oq p sn 304 4NG EHMAI NOO 390 68 2 1 242551 er INT VWERENERSSIN 020 9080 du001 s pP EJE L d 609 031 S080 1 014 zs 9080 ML 9218 LI I kH A na S080 AL 9080 M 5214 9080 4u00L 012 olo kol ko kok elek ki N R 9 J EJE v Ae 082 1 9 AV13H S AVT3H _AV13H AVTAH Z_AV13H 53 9 jo r y usi 3811192 ypy yeu psweu sau 1070W S080 3u00L 54 Tud 3NG 8gNOS 3NGQ NOO DAG MO NOCH ANG gNOS ANGQ 8NOS INT ENOI INI ENOI 19 99r sor INT ENOI Glo d r ssr s n 3ANGQ 8NOO qN NO ssr INT ZNOI INT ENOI qN NO 25 95 340 2 JN NOCH INT ZNOI ysr dar HS osr INAZNOI NO NO ER E L L 3 2 1N NO9 i L sin 340 2 m L L L ar Hr ser INTZNOI MO MO 340 2 340 2 300 2 2 INT ZNOI F F zer ger ser ver INT ENOI 3ANGQ NOO INT ZNOI 340 2 Ek L L L L er rer D I es e uoqeq 3NQ NOO DAG SN NO2 INT ENOI NO NO m L err gt F ser 300 2 eer INTENOI
20. angezeigt Dann durchl uft das Hauptprogramm zwei Schleifen eine f r jede Richtung wobei die Werte von 0 bis 256 und wieder zur ck durchlaufen werden bei einer Schrittweite von 32 Der Wert wird an den D A Wandler unter Verwendung von dac_write DAC_value gesendet und die Ausgangsspannung erscheint am Ausgangspin DAI Diese Spannung wird ber einen Jumper an ADO angelegt einem Ein gang des A D Wandlers und die Funktion get_adc adc_channel wird aufgerufen um den Wert f r diese Spannung zur ckzulesen der Wert liegt zwischen 0 und 1023 Beide Werte werden nun zu sammen mit einem Balken der den gelesenen Analogwert repr sentiert angezeigt unter Benutzung der Zeichen Vorschl ge zum Experimentieren ndern Sie die 32 in beiden Schleifen for DAC_value in range 0 257 32 und for DAC value in range 224 1 32 ndern Sie die 4in adc_string 0 04d ndern Sie die 3 in print s 55 55 5 0 03d Entfernen Sie den Jumper zwischen ADO und DAT und beobachten Sie was passiert 37 Kombinierte Tests Dieser Abschnitt zeigt an Hand von Beispielen die Benutzung von mehreren Funktionsbl cken gleichzei tig A D und Motor Controller Im Testprogramm potmot f r Potentiometer Motor benutzen wir ein Poti das mit dem analog zu digital Konverter A D verbunden ist um einen Eingangswert zu erhalten der dazu dient einen Motor in Drehzahl und Drehrichtung zu steuern Es wird so konfiguriert da
21. auf 0 gesetzt AUS Nun werden die Verdrahtungshinweise angezeigt und der Computer wartet auf die Best tigung vom Nutzer Wenn die erfolgt ist definiert das Programm drei Funktionen die periodisch ausgef hrt werden display printchar sorgt f r die korrekte Anzeige der Motorbeschleunigung bzw abbremsung unter Benutzung der importierten Python 3 Funktion print reset ports sorgt f r das R cksetzen der Ports beim Programmende Das ist nicht in VViringPi f r Python vorhanden so dass es hier definiert vverden muss Das ist besonders vvichtig im Motorpro gramm vveil es einen unkontrollierten Motorlauf nach Programmende verhindert Das ist vvichtige Si cherheit wenn Sie Dinge wie z B Propeller usw antreiben loop start_pwm Stop Dm step printchar ist die Haupt PWM Steuerungsschleife Wie zuvor wird diese auf vier verschiedene Arten aufgerufen Drehzahl erh hen dann verringern dann wieder in Gegenrichtung erh hen und verringern start_pwm ist der 0 bis 1024 PWM Wert mit dem die Schleife gestartet wird stop_pwn ist der bis 1024 PWM Wert mit dem die Schleife beendet wird step ist der Differenzwert f r jeden folgenden Schleifendurchlauf Printchar istein Zeichen um anzuzeigen ob der Motor beschleunigt oder abbremst Das Hauptprogramm enth lt vier Aufrufe von 1oop um das Beschleunigen und Abbremsen in jeder Drehrichtung zu demonstrieren mit einer kleinen Pause zwischen den Schleifendurchl ufen die durch
22. auf B10 ist auf dem Foto fast nicht zu sehen weil er k rzer ist als die ande ren In den Testprogrammen werden die ben tigten Verbindungen angezeigt bevor der Test gestartet wird Die Eingangs und Ausgangs Jumper werden auf folgende Weise bezeichnet U3 out B1 bedeutet einen Jumper auf den B1 Pins auf der out Seite vom Puffer Chip U3 Somit werden die 5 Jumper im oberen Bild bezeichnet mit U3 out B1 U3 out B2 U3 out B3 U5 in B10 und U5 in B11 Testen der Druckschalter pushbuttons Es gibt Testprogramme f r die Schalter in C und Python Die C Version hei t buttons und die Python Version hei t buttons rg py Um die Testprogramme laufen zu lassen muss das Gertboard so kon figuriert werden wie es in Bild 11 zu sehen ist das Schema in Bild 12 zeigt dasselbe bersichtlicher Es gibt Verbindungsdr hte die die Pins Bl B2 und B3 des Pfostensteckers J3 mit den Pins GP25 GP24 und GP23 des Steckers J2 verbinden Folglich liest GPIO25 den links liegenden Druckschalter GPIO24 den mittleren und GPIO23 den rechten Druckschalter Die Jumper auf der out Seite von U3 U3 out BI U3 outB2 U3 out B3 sind optional Wenn sie gesteckt sind dann zeigen die linken 3 LEDs den Zustand der Schalter an 17 p H e e e Gi e St si d Bild 11 Das Foto zeigt die Verbindungen f r das Schalter Testprogramm F r den Nachbau eignet sich die schematische Darstellung in Bild 12 besser 3 3
23. f r das Hochladen von Programmen auf den ATmega Mikroprozessor Haz PBH H H FEL Fm Fir Fr Fu Fri Fi Az FG K pu F l FA Um Ihr Programm auf den Chip in der Arduino IDE hochzuladen w hlen Sie File gt Upload Using Pro grammer Es dauert einen Moment um das Programm zu bersetzen compile und hochzuladen uplo ad und dann wird Ihr Programm auf dem Microcontroller ausgef hrt Programm Blink Das Programm Blink befindet sich unter dem Men punkt File gt Examples gt Basics W hlen Sie es aus und laden Sie es auf den ATmega Chip indem Sie wie oben beschrieben vorgehen Das Programm wird jetzt ausgef hrt aber es passiert noch nichts Auf den meisten Arduino Bords hat das Pin 13 das digita le Pin das in diesem Programm benutzt wird eine mit ihm verbundene LED aber nicht das Gertboard Sie m ssen die LED selbst anschlie en Wenn wir in die Tabelle 4 oben schauen sehen wir dass das digitale Pin 13 auf dem Gertboard mit PB5 bezeichnet ist so dass Sie PB5 mit einem der I O Ports ver binden m ssen Im Abschnitt ber gepufferten I O LEDs und Druckschalter haben wir erkl rt dass Sie eine LED benutzen k nnen um den Zustand eines Signals anzuzeigen indem Sie das Signal mit einem der Pins BUF1 bis BUF12 auf dem unbezeichneten einreihigen Stecker oben auf dem Bord verbinden Wenn Sie also PB5 mit BUF1 verbinden wie es unten gezeigt wird f ngt die erste LED an zu blinken 43 E E
24. ist ein Arduino Programm das alle 12 LEDs benutzt um einen Balken darzustellen der die Spannung am analogen Eingang z B an einem 48 Potentiometer anzeigt Zuerst m ssen Sie dieses Programm an den richtigen Ort kopieren Dazu sollten Sie ein Verzeichnis mit dem Namen sketchbook in Ihrem Home Verzeichnis haben Legen Sie darin ein Unterverzeichnis mit dem Namen LEDmeter an und kopieren Sie LEDmeter ino in dieses Ver zeichnis Sie k nnen das mit folgenden Befehlen in ihrem Verzeichnis gertboard_sw ausf hren mkdir sketchbook LEDmeter cp LEDmeter ino sketchbook LEDmeter Nun befindet sich das Programm im Men File gt Sketchbook in der Arduino IDE Sie k nnen es ffnen um den Code zu analysieren F r dieses Beispiel haben wir zwei extra Funktionen erstellt turn_on_leds undturn_off_leds um zu demonstrieren dass Sie gew hnlichen C Code in den Programmen sketches benutzen k nnen einschlie lich Funktionen Die Pinnummern werden in einem Array gespeichert um das Ein und Ausschalten von LEDs zu vereinfachen Wenn Sie LED 4 anspre chen wollen benutzen Sie Arduino Pin 14 1 4 Um das so machen zu k nnen haben wir eine in das erste Array Element geschrieben weil es keine LED 0 gibt Eine Eigenschaft von C mit der Sie m glicherweise noch nicht vertraut sind ist die Benutzung von static in der Definition static int old_max_led 0 Das Schl sselwort static bedeutet dass der Wert der Variablen old max L
25. l N A0 R201 R212 gt IC SE Sf l SESS 0h22 J RETA 1291 1 T TI IST TT w EE m AD 4 e ae u N ng 51 A00 S 5 Kan Rus T m P 597 17 el RLYI DA ml mul IO RPWR Daag l l EI H Niol Ectrztrzzl 20 hiy PR5 70 RPWR HIT Yi U4 xi RLY3 G ca 8 8200 pt mm ip PR2 so op olo ojo o GE b n mun 50656569 2 PB gn e B IRPWR ut ER PR k 10 P di LI n ES RLY5 PD7 5 055555 10 RPWR PD6 H e tui S SIE 215 EE Elm g Ba ie 05 4 E us RPWR PD4 H EK T m 558 LH BI 82 in 83 B4 n 4 pe E Ber ERIERIER TER aa h pp E GI s El PDO Sie 4 xl eroyll EZ 23607 s mxum o 1 91 22 9 96 3 d 35058800 w 8 Pt4 64 411 1 ss 2 0 021 k Sie Pi au m n ER z RI PC2 25 21 Oct 2012 elei EE E eg E Ze E 22 1 PCI E 1 EEE 555555 595 906 5V CH 282 EI Ji e EE a la En g ea Bild 5 Das Diagramm zeigt ein leeres Gertboard Die blauen Elemente korrespondieren mit den wei en Linien und dem Text die grauen Elemente korrespondieren mit den silberfarbenen Anschl ssen auf dem Bord Das Diagramm in Bild 5 wurde aus den Daten erstellt die f r das Design des Gertboard benutzt wurden Das Blau im Diagramm zeigt die wei en Linien und den Text auf dem Bord Im Schema grau sind alle Kontaktstellen auf der Oberseit
26. rest 0 013 0 013s definiert wird Wenn Port 17 null ist dreht der Motor in eine Richtung ist Port 17 eins dreht er in die andere Richtung Wie blich wird das Hauptprogramm in einen try except Block eingeschlossen um das sichere R cksetzen der Ports zu garantieren wenn 31 der Benutzer das Programm ber Ctrl C beendet Vorschl ge zum Experimentieren ndern Sie die folgenden Werte und beobachten Sie was passiert rest 0 013 ndern Sie 0 013 zu 0 und sehen Sie wozu es da ist e loop 140 1024 1 ndern Sie 140 in einen Wert lt 140 aber gt 0 loop 140 1024 1 ndern Sie 1024 in eine kleinere Zahl gt 140 1 140 1024 1 ndern Sie in ein anderes Zeichen Digital zu analog und analog zu digital Konverter Im Funktionsblock Schema des Gertboards Bild 2 Seite 6 sind die Komponenten des Konverters oran ge markiert Sowohl der digital zu analog Wandler D A als auch der analog zu digital Wandler A D sind 8 Pin Chips von Microchip obwohl sie seltsamerweise in verschiedenen Geh usen unterge bracht sind Der A D Wandler bezeichnet mit U6 auf dem Bord ist in einem dual in line Geh use w hrend der D A Wandler U10 ein SMD Geh use hat surface mounted device Jeder unterst tzt 2 Kan le Beide benutzen den SPI Bus um mit dem Raspberry Pi Daten auszutauschen Die SPI Pins an den zwei Chips sind mit den Pins SCLK MOSI MI
27. schaltet eine von 8 LEDs ein um die Zahl anzuzeigen die durch die Stellung der drei Schalter bin r codiert gebildet wird Schalter S1 bildet das h chstwertige und Schalter S3 das nieder wertigste Bit der Zahl Schalter S2 das Bit in der Mitte F r die Anzeige repr sentiert die LED D5 die Zahl 0 D6 die 1 usw bis LED DI2 die die 7 repr sentiert Mit drei Schaltern k nnen 8 Zust nde 0 bis 7 dargestellt werden Erinnern Sie sich dass die Schalter high 1 sind wenn sie offen sind und low 0 im gedr ckten Zustand so dass LED D12 leuchtet wenn kein Schalter gedr ckt ist das ergibt bin r 111 oder dezimal 7 D6 leuchtet wenn S1 und S2 gedr ckt sind ergibt bin r 001 usw Es gibt einiges zu verdrahten bei diesem Beispiel da wir alle O Ports au er einem benutzen GPIO25 bis GPIO23 lesen die Druckschalter somit m ssen GP25 mit B1 GP24 mit B2 und GP23 mit B3 ver bunden werden Die 8 am niedrigsten bezifferten GPIO Pins werden mit den U O Ports 5 bis 12 benutzt so dass GP11 mit B5 GP10 mit B6 GP9 mit B7 GP8 mit B8 GP7 mit B9 GP4 mit B10 GP1 mit B11 und GPO mit B12 verbunden werden m ssen Zus tzlich da wir die O Ports 5 bis 12 als Ausgang be nutzen m ssen Sie alle Ausgangs Jumper f r die Pufferchips U4 und US installieren erinnern Sie sich dass die Ausgangs Jumper diejenigen oberhalb der Chips sind M w t wo o e Ss S UOTA W TB WoTr 33 LS S LE LE L m L Hel
28. setup_gpio aufgerufen um festzulegen welche Pins wie benutzt werden In setup_gpio wird wie blich INP_GPIO n benutzt wobei n die Pinnummer ist um die Pins zu 35 aktivieren Das ffnet die Pins als Eingang Sie sollen jedoch als SPI Bus benutzt werden was eine der alternativen Funktionen f r diese Pins ist es ist Alternative 0 Wir benutzen SET GPIO ALT n a wobei n die Pinnummer und a die Nummer der alternativen Funktion ist in diesem Fall um diese alternative Funktion der Pins zu aktivieren Anschlie end sendet das Programm unterschiedliche Werte an den D A Wandler und erwartet vom Benutzer der ein Multimeter verwendet eine Best tigung dass der D A Wandler die korrekte Ausgangsspannung erzeugt atod Um den A D Wandler zu testen fragt das Programm at od zuerst welcher Kanal benutzt werden soll und zeigt die dazu n tigen Verbindungen an Danach ruft es setup_io auf um die GPIO Schnittstelle zu initialisieren Anschlie end legt setup_gpio fest welche Pins wie benutzt werden Die Funktion setup_gpioinatod arbeitet genauso wie die in dtoa au er f r die Aktivierung von GPIO8 anstelle von GPIO Nun liest atod wiederholt den 10 Bit Wert vom A D Wandler und zeigt den Wert auf dem Bildschirm an sowohl als absolute Zahl als auch als Balken der gelesene Wert wird durch 16 geteilt und das Ergeb nis wird als Zeichenkette von Zeichen pr sentiert Beachten Sie dass auch wenn das Potentiomet
29. sind beschriftet mit S1 S2 und S3 sie sind gleich in der N he der LEDs angeordnet 8 7 68 5 20 19 18 17 16 15 14 13 12 11 0000 D DD DD DUDU DD DUDU D 1234 1 2 3 4 5 6 7 8 910 Bild 6 Zwei Beispiele von ICs ein 8 Pin und ein 20 Pin dual inline Geh use DIP Bei diesem Geh usetyp ist Pin 1 immer das erste Pin entgegen dem Uhrzeiger von der Markierungskerbe Integrierte Schaltkreise ICs oder Chips werden mit Un bezeichnet Z B sind die Ein Ausgabe Puffer VO buffer Chips U3 U4 und U5 diese sind nahe der Mitte auf dem Bord w hrend der Atmel Micro controller U8 ist dieser ist unterhalb und links von U3 bis U5 Es ist wichtig die IC Pin Nummerierung zu verstehen Wenn der Chip so angeordnet ist dass sich die halbrunde Markierung links befindet ist Pin 1 das linke Pin in der unteren Reihe Pin Nummern werden entgegen dem Uhrzeigersinn hochgez hlt wie in Bild 6 gezeigt Wenn man das wei kann man die Schaltpl ne im Anhang A immer auf die ICs auf dem Gertboard beziehen Pfostenleisten sind eine oft benutzte Komponente auf dem Gertboard Sie sind mit Jn bezeichnet Z B gibt es eine Anzahl von Pfostenleisten entlang der linken Seite des Bords Diese erlauben Ihnen den Zugriff auf die drei ICs auf der linken Seite des Bords J28 ganz oben f r den analog zu digital Chip J29 darunter f r den digital zu analog Chip und J25 darunter f r den Atmel Microcontroller Es ist ein bisschen schwierig die Grenzen zwi
30. solange der Chip mit Spannung versorgt wird Beachten Sie dass Sie keinen Code schreiben m ssen um diese bei den Funktionen aufzurufen sie werden automatisch bei der bersetzung und dem Hochladen upload des Programms hinzugef gt Die Programmiersprache die f r diese Programme benutzt wird basiert auf 42 C so dass sie Ihnen vertraut vorkommen sollte wenn Sie bereits die C Testprogramme f r das Gertboard angeschaut haben Hochladen von Programmen unter Benutzung des SPI Busses Um ein Programm sketch auf dem ATmega Chip des Gertboards laufen zu lassen muss es irgendwie auf den Chip bertragen werden das wird als Hochladen engl upload des Programms bezeichnet Es gibt verschiedene Methoden ATmega Chips zu programmieren aber wir wollen den SPI Bus der auf den GPIO Pins 8 bis 11 verf gbar ist benutzen Das ist m glich weil die Arduino IDE das spezielle Programm zum Herunter Hochladen downloader uploader avrdude benutzt das Sie von projects drogon net bezogen haben Um dies zu benutzen m ssen Sie die GPIO Pins die f r den SPI Bus benutzt werden mit dem 6 Pin Stecker J23 verbinden wie es im Schema unten gezeigt wird Hier verbinden Sie einfach die SPI Pins des GPIO mit den entsprechenden SPI Pins auf dem Stecker Die Anordnung der Pins auf J23 ist im Bild auf Seite A 6 zu sehen MITEHUTRIIET au E uu Se E CE TR Fnanherry Pl Eeribn rd 31 det 2012 mim Bild 27 Verdrahtungssehema
31. wenn der Wert high 1 ist und sie ist aus wenn der Wert low 0 ist Es gibt eine drit te M glichkeit den Port zu nutzen wenn weder der Eingans noch der Ausgangs Jumper steckt kann das VO Pin als einfacher Logikdetektor benutzt werden Das I O Pin kann mit einem anderen logischen Punkt verbunden werden z B einem der entweder 3 3 oder 0V hat und die LED zeigt dann ob der Punkt 1 ist oder 0 Der Widerstand auf der rechten Seite von Bild 8 ist ein pull up Widerstand Wenn er nicht vorhanden w re w rde die LED mit der kleinsten Spannungs nderung an und aus gehen z B wenn das Bord be r hrt wird Das Einschalten der LED wenn sie nicht betrieben wird verhindert dieses ziemlich zuf llige Verhalten und dient au erdem der Anzeige dass das Gertboard richtig mit Strom versorgt ist Beachten Sie dass das zuf llige Verhalten dann auftritt wenn der Ausgangs Jumper steckt aber der Raspi Punkt nicht belegt ist Es gibt einen Serienwiderstand zwischen dem Eingangspuffer das nach links zeigende Dreieck und dem Raspi Punkt Dieser ist dazu da den BCM2835 der Prozessor auf dem Raspberry Pi zu sch tzen f r den Fall dass der Nutzer den GPIO Port als Ausgang programmiert aber den Eingangs Jumper steckt Der BCM2835 Eingang ist hochohmig und darum produziert ein K Serienwiderstand keinen nennenswerten Spannungsabfall wenn der Port als Eingang arbeitet Druckschalter Pushbuttons Das Gertboard hat drei Drucks
32. AD wie im Schema unten 34 EZ L MOTA NOTE NDT ta ik uu m 4 UF r Wi BSLBELSLALSLELFLA LRLlE Ln L L H Fuee m s 24 R201LR20 7 519 EE EH E EE E EK EE EE H 1 a 4 EE EE EE ADI kd pul 4 en Pa Self T EEE PET ur PB EL Se m WV Gs a5 it 7 S ed ir 2156 a PD d ERR E d SES LEI ER AE E E EE E T Ges pp L m L EI pn SS m PC GI 5 OH e 5 2 ospberry Pi PC Sie Gertboard pci 284 21 Oct 2012 Pc0 232 m e w i E Jm Bild 24 Verdrahtungsschema f r das Testprogramm dad das den Test der A D und D A Wandler zusammen erlaubt ohne ein Multimeter oder ein Potentiometer zu benutzen Test der D A und A D Wandler in C Da die D A und A D Wandler beide den SPI Bus benutzen wurde der allgemeine Code f r den SPI Bus in eine separate Datei ausgelagert gb spi Es gibt au erdem eine zugeordnete Header Datei spi h die viele Makros und Konstanten enth lt die f r die Arbeit mit dem SPI Bus ben tigt wer den genauso wie Deklarationen f r die Funktionen in gb spi c Diese Funktionen sind setup_spi read_adc undwrite_dac setup_spi setzt die Taktgeschwindigkeit f r den Bus und l scht die Statusbits read_adc hat ein Argument das den Kanal angibt muss 0 oder 1 sein und gibt eine Ganzzahl mit dem gelesenen Wert vom A D Wandler zur ck
33. All das wird im Bild 22 gezeigt Das C Testprogramm f r den A D Wandler hei t at od die Python Version ist atod py F r diesen Test wird eine Spannungsquelle an den analogen Eing ngen ben tigt Das wird am besten mit einem Potentiometer realisiert Die beiden Anschl sse des Potis werden einmal mit high 3 3V die Sie von 33 einem Pin das mit 3V3 bezeichnet ist abgreifen k nnen und zum anderen mit Masse GND oder verbunden Die Mittelanzapfung des Potis wird mit AD0 f r Kanal 0 wie unten gezeigt oder mit AD1 f r Kanal 1 verbunden Die Jumper f r die Benutzung des SPI Busses m ssen auf den Pins GP11 GP10 GP9 und GP8 stecken um diese mit dem SPI Bus zu verbinden Das ist in Bild 23 zu sehen K 4 m a Au L ad joer Kl l B L rar Sch _I53858558 5855 222 EZ gt 5 CR 323 Raspberry Pi KA ER Gertbaard wrr 182 21 Oct 202 SSS SS s SS SSES 435 S su Mm di G mibl E hus Bild 23 Verdrahtungsschema f r das Testprogramm atod Sogar ohne Multimeter und ohne Potentiometer k nnen die A D und D A Wandler getestet werden indem der Ausgang des D A Wandlers mit dem Eingang des A D Wandlers verbunden wird Dieser Test hei t dad f r digital analog digital Um das Gertboard f r diesen Test zu konfigurieren stecken Sie alle Jumper auf die Pins des SPI Busses die GP11 bis GP7 mit den Pins des SPI Busses dar ber verbin den und stecken einen Jumper zwischen den Pins DAI und
34. Beachten Sie Der Druckschalter an Port 3 soll hier benutzt werden aber die LED f r Port 3 soll nicht benutzt werden Somit wird der Ausgangs Jumper f r Port 3 der an U3 out B3 gesteckt w r de nicht installiert Wenn man den Schaltplan auf Seite A 2 betrachtet wird klar dass der Ausgangspuffer f r Port 3 an Pin 14 des Pufferchips U3 geht Dieser ist mit Pin 1 von U3 out B3 verbunden als P6 im Schema zu sehen Es ist nicht offensichtlich welches Steckerpin auf dem Bord Pin 1 ist aber da es mit Pin 14 des Chips verbunden ist k nnen wir schlussfolgern dass es das Pin genau oberhalb von Pin 14 ist Ein einfacher Test zeigt dass es tats chlich das richtige Pin ist und wir verbinden dieses Pin mit dem BUF6 Pin oben auf dem Bord Das erlaubt dem Schalter ein Signal zu generieren das dann an Port 6 gesendet wird Ein Jumper wird auf U4 in B6 gesteckt um das Signal einlesen zu k nnen Der Wert des Schalters von Port 3 wird ebenfalls eingelesen und diese zwei Signale sollten identisch sein jedenfalls meistens 23 Test von butled in C In but led c benutzen wir INP_GPIO um GPIO22 und GPIO23 auf Eingang zu setzen und GPIO_PULL und GPIO_PULLCLKO um pull up Widerst nde an GPIO23 zu setzen Das wird auf Seite 19 im Abschnitt Schaltertest n her beschrieben Dann werden die GPIO Werte wiederholt eingelesen und die Bin rwerte von GPIO22 und GPIO23 werden angezeigt GPIO23 zuerst wenn sie sich seit der letzten Abfrage ge ndert haben
35. FEN LOGIC LTD Gertboard Benutzerhandbuch Gert van Loo und Myra Vaninvvegen Revision 2 0 Das Gertboard ist ein GPIO Erweiterungbord f r den Raspberry Pi Computer Es besitzt eine Vielzahl unterschiedlicher Komponenten einschlie lich Schalter LEDs A D und D A Konverter einer Mo torsteuerung und einem Atmel AVR Microcontroller Es gibt Testprogramme f r das Gertboard die in C und Python geschrieben und frei im Web verf gbar sind Dieses Handbuch beschreibt sowohl wie das Gertboard f r verschiedene Anwendungen konfiguriert wird als auch wie die Testprogramme arbeiten Copyright 2012 by Fen Logic Ltd Alle Rechte vorbehalten bersetzt ins Deutsche von Hans Dieter Busch mit freundlicher Genehmigung der Autoren Inhaltsverzeichnis Gertboard berblick zu 5 Beschriftung und nenne nenn 7 Stromversorgung auf dem Gertboard 9 GP IQ TIET 10 e 11 Testprogramme berblick E31 31111 1 3E 3 E1 s essesi 11 C Codes eebe 11 IC 12 Python Code berblick 55c E213 5193111281 3153 51 1 1 snn 13 Herunterladen der Software AER 13 Warum unterschiedliche Programmversionen 14 Gepufferte Ein Ausgabe buffered I O LEDs und Druckschalter
36. SO CSnA und CSnB auf dem Stecker genau oberhalb von J2 auf dem Bord verbunden somit sind diese Pins im Funktionsblock Schema ebenfalls orange markiert SCLK ist der Takt MOSI Master Output Slave Input ist der Ausgang vom RPi und MISO Master Input Slave Output ist der Eingang zum RPi CSnA ist das Chip Select Signal f r den A D und CSnB ist das Chip Select Signal f r den D A Wandler das n im Signalnamen bedeutet dass das Signal negativ ist somit ist der Chip nur aktiv wenn das Signal low 0 ist Sowohl der A D als auch der D A Chip haben jeweils einen 10K pull up Widerstand an ihrem Chip Select Pin somit sind die Chips nicht aktiv wenn die Pins nicht verbunden sind Die SPI Pins sind g nstigerweise genau oberhalb von GP7 bis GP1 lauf Stecker J2 platziert weil eine der alternativen Funktionen dieser Pins das Treiben der SPI Signale ist Zum Beispiel ist die Funktion ALTO Alternative 0 von GPIO9 gleich SPIO_MISO deshalb befindet sich das Pin MISO genau ne ben dem Pin GP9 Somit ist die Benutzung der A D und D A Wandler einfach indem mit Jumpern die Pins GP7 bis GP11 mit den SPI Pins direkt neben ihnen verbunden werden obwohl Sie technisch gese hen nur CSnA f r den A D und CSnB f r den D A Wandler ben tigen In der Schaltung sind die D A und A D Wandler in der linken oberen Ecke auf Seite A 6 zu sehen Digital zu analog Konverter D A Das Gertboard benutzt einen MCP48x2 digital zu analog W
37. Schlei 19 fendurchlauf wird der Status jedes Schalter gelesen und wenn er gedr ckt ist eine 1 und wenn er nicht gedr ckt ist eine 0 in der Array Variablen status list f r diesen Schalter gespeichert Anschlie end werden die Werte in der Variablen status_list mit den Werten in der Variablen previous_status hier sind die Werte des vorherigen Schleifendurchlaufs gespeichert verglichen Die Zeile if current_status previous_status f hrt bei einer Ver nderung des aktuellen Status gegen ber dem letzten Status einen kleinen Abschnitt im Programm aus der den neuen Wert auf dem Bildschirm anzeigt und den Z hler button_press hochz hlt diese Variable enth lt die Zahl der Schaltvorg nge Die Schleife startet von vorn bis 19 Schaltvorg nge erreicht sind dann bricht sie ab Die while Schleife ist in einen try Block eingeschlossen try lt while block gt except KeyboardInterrupt das erlaubt dem Programm auf die Tastenkombination Ctrl C zu reagieren und die Ports zur ckzusetzen sowie das Programm vorzeitig zu beenden Wenn das Programm normal nach 19 Schaltvorg ngen beendet wird werden die Ports zur ckgesetzt Wenn wir nichttry except benutzt h tten w rde der Tastatur Interrupt Ctrl C das Programm zwar beenden aber die Ports ge ffnet lassen Das f hrt zu Fehlern wenn die Ports erneut ge ffnet wer den sollen Vorschl ge zum Experimentieren Versuchen Sie die folgenden nderungen und sehen Sie wa
38. Wenn also 01 auf dem Bildschirm angezeigt wird k nnen wir sehen dass GPIO23 low ist und GPIO22 high Beachten Sie dass die LED f r Port 6 mit D6 bezeichnet Aus sein sollte wenn der Schalter3 gedr ckt ist und Ein wenn er nicht gedr ckt ist Nun wenn die Werte f r GPIO22 und GPIO23 immer dieselben sind sollte immer nur 00 oder 11 angezeigt werden Aber gelegentlich sehen wir 01 oder 10 Wenn das passiert wechselt die erste Stel le zum neuen Wert und unmittelbar danach die zweite Aber die Werte von GPIO22 und GPIO23 werden gleichzeitig gelesen wieso haben wir dann verschiedene Werte an den GPIO Pins Die Antwort liegt in der kleinen Zeitspanne die das Signal vom Druckschalter der mit GPIO23 verbunden ist durch die Puffer ben tigt um an GPIO22 zu gelangen Manchmal lesen wir nachdem sich GPIO23 ge ndert hat aber nicht genug Zeit vergangen ist um die nderung an GPIO22 zu sehen Test von butled in Python Das Programm butled rg py arbeitet z Z nur mit RPi GPIO Es ist ein sehr hnliches Programm wie buttons aber mit zwei Schaltern weniger und einer LED die leuchtet wenn der Schalter gedr ckt ist Zwei GPIO Ports werden benutzt Ein Port 23 arbeitet mit einem pull up Widerstand f r den Schalter und der andere 22 wird als normaler Eingang betrieben In der Haupt while Schleife fragt das Pro gramm beide Ports ab und inkrementiert bei einer nderung des Zustands die Va
39. andler D A von Microchip Der IC wird in drei unterschiedlichen Typen hergestellt mit 8 10 oder 12 Bits Der auf Ihrem Bord ist abh ngig von der Verf gbarkeit der Teile Um zu bestimmen welchen Sie haben sehen Sie sich den kleinen Chip U10 genauer an Er sollte eine Nummer 48x2 tragen wobei x entweder 1 oder 2 ist Wenn x ist haben Sie die 8 Bit Version Wenn es 1 ist haben Sie die 10 Bit Version und bei x 2 die 12 Bit Version Diese ICs sind alle Pin kompatibel und werden auf dieselbe Weise programmiert Im Einzelnen die Routine die zum D A Wandler schreibt geht vom 12 Bit Format aus so dass es wichtig ist den Wert passend auszuw hlen Details siehe unten im Abschnitt Test der D A und A D Wandler Die maxi male Ausgangsspannung des D A Wandlers die Ausgangsspannung wenn als Eingang alle Bits 1 sind betr gt 2 04 V Die analogen Ausg nge der beiden Kan le gehen auf Pins mit der Bezeichnung DAO f r Kanal 0 und DAI Kanal 1 auf dem Stecker J29 am linken Rand des Bords Gleich neben diesen Pins sind die Mas se Pins GND die die Referenz liefern 32 Analog zu digital Konverter A D Das Gertboard benutzt einen MCP3002 10 Bit analog zu digital Wandler von Microchip Er unterst tzt 2 Kan le mit einer Abtastrate sampling rate von 72k Messungen pro Sekunde samples per second sps Der Maximalwert 1023 wird geliefert wenn die Eingangsspannung 3 3V betr gt Die Analogeing nge f r die
40. aten zu lesen und anzuzeigen die der ATmega ber den seriellen Port gesendet hat Es gibt eine Schaltfl che button namens Serial Monitor auf der Werk zeugleiste toolbar der Arduino IDE aber die funktioniert nicht beim Raspberry Pi Sie geht von einer USB Verbindung zu einem Arduino Bord aus nicht von einer Verbindung zu einem Gertboard ber GPIO Der einfachste Weg die Daten zu erhalten ist die Verwendung des Programms minicom Sie k nnen es einfach installieren indem Sie auf dem Terminal das folgende Kommando eingeben sudo apt get install minicom Sie k nnen Men s benutzen um minicom zu konfigurieren durch den Befehlminicom s Alter nativ dazu gibt es eine Datei die zusammen mit der Gertboard Software geliefert wird minirc ama0 mit den Einstellungen die f r das Lesen der GPIO UART Pins bei 9600 Baud ben tigt werden Kopie ren Sie diese Datei die von Gordon Henderson bereitgestellt wurde nach etc minicom Sie m s sen wahrscheinlich sudo dazu verwenden und rufen Sie minicom auf sudo minicom ama0 Nun sollten Sie wenn Sie das Programm auf den ATmega Chip hochgeladen haben den Wert vom Po tentiometer auf dem minicom Monitor angezeigt bekommen Programm LEDmeter Dieses Beispiel haben wir speziell f r das Gertboard entwickelt basierend auf dem Programm AnalogInput das oben beschrieben wurde Im Verzeichnis gertboard_sw existiert neben den C Dateien eine weitere Datei mit dem Namen LEDmeter ino Das
41. ch betrachtet verbindet ein Open Kollektor Treiber die Masse Seite einer externen Schaltung mit der Masse auf dem Bord und gibt somit der Schaltung Strom Der ULN2803A kann bis zu 50V aushalten und 500mA an jedem seiner Ports treiben Jeder Treiber hat eine integrierte Schutzdiode die oberste Diode im Schaltplan im Bild 15 24 common OUT Raspi Bild 15 Schaltplan eines Open Kollektor Treibers Das common Pin ist wie der Name sagt gemeinsam f r alle Open Kollektor Treiber Es ist nicht mit etwas anderem auf dem Gertboard verbunden Wie bei allen Ger ten kann die Steuerung f r die Open Kollektor Treiber der Raspi Punkt auch mit dem ATmega Controller verbunden werden z B um Relais oder Motoren anzusteuern Die Open Kollektor Treiber sind im Schaltplan auf Seite A 3 zu sehen Im Blockdiagramm des Gertboards Bild 2 auf Seite 6 sind die Bereiche in denen sich die Komponen ten f r die Open Kollektor Treiber befinden gelb markiert Die Pins die mit Raspi im Bild 15 be zeichnet sind sind die Pins RLY1 bis RLY6 auf der Steckerleiste J4 Die Pins die mit common be zeichnet sind sind die mit RPWR bezeichneten auf der Steckerleiste am rechten Rand des Bords Und die Pins die mit OUT bezeichnet sind sind die Pins RLY1 bis RLY6 auf der Steckerleiste 112 bis J17 Wie das Ganze benutzt wird wird durch ein Testbeispiel veranschaulicht Test des Open Kollektor Treibers Das C Programm ocol f r ope
42. chalter die mit den Ports 1 2 und 3 verbunden sind Der Schaltplan f r diese Ports ist in Bild 9 zu sehen Der Plan ist prinzipiell derselbe wie im Bild 8 mit dem Unterschied dass links ein Druckschalter und ein Widerstand vorhanden sind Wenn der Schalter gedr ckt wird wird der Raspi Punkt mit Masse verbunden und liest somit low 0 15 Raspi 74xx244 putput 1k 1 0 Bild 9 Schaltplan f r die I O Ports 1 2 und 3 mit Druckschalter Um einen Druckschalter zu benutzen darf der Eingangs Jumper nicht gesteckt sein auch wenn der Port als Eingang f r den Raspberry Pi arbeitet Wenn der Jumper installiert ist verhindert der Ausgang des unteren Puffers die ordnungsgem e Funktion des Druckschalters Um den Zustand des Schalters mit der LED anzuzeigen kann der Ausgangs Jumper gesteckt werden LED An bedeutet Schalter oben LED Aus bedeutet Schalter gedr ckt Um die Druckschalter benutzen zu k nnen muss ein pull up Widerstand an die Raspberry Pi GPIO Pins angeschlossen werden siehe unten Seite 19 so dass logisch 1 high gelesen wird wenn der Schalter nicht gedr ckt ist Lage der I O Ports auf dem Gertboard Im Funktionsblock Foto Bild 2 auf Seite 6 sind die Komponenten die die gepufferte Ein Ausgabe implementieren rot umrandet Die ICs die die Puffer enthalten sind U3 U4 und U5 nahe der Mitte des Bords Die LEDs sind beschriftet mit D1 bis D12 D1 wird durch Port 1 getrieben D2 durch Port
43. chleife durchlaufen werden soll Reps die PVVM Taktfrequenz Hertz die Frequenz f r die Motor Taktrate engl Motor loop time period Freq Danach werden die Ports als Ausgang konfigu riert und auf Aus 0 gesetzt Danach wird die Funktion run_motor Reps pulse_width port_num time_period definiert Sie steuert den GPIO Port f r eine genaue Zeit ein und aus high oder low Der Port port_num wird f r die Zeitpulse_width eingeschaltet dann f r die Zeit time_period ausge schaltet und all das wird Reps Mal wiederholt 400 in diesem Fall Die Hauptschleife in run motor befindet sich in einem try except Block Das ist eine wichtige Sicherheits ma nahme um das Ausschalten des Motors bei einem Tastatur Interrupt zu gew hrleisten Das ist sogar noch wichtiger bei Hardware PWM in der anderen Version Die Funktion run_motor wird von der Funktion run_ 1oop aufgerufen Jeder der 400 Aufrufe ist genau ein Schritt auf oder ab in der Motordrehzahl 400 Wiederholungen bei 2000 Hertz ergeben 0 2 Sekunden 30 Nun definieren wir die Funktion run_loop run_loop startloop endloop step port_num printchar Die Argumente start loop und endloop sind die Zeit f r den geschalteten Port f r EIN bei Be ginn und Ende der Schleife step ist der Inkrementalwert f r jede folgende Schleife port_nun ist der geschaltete Port 17 oder 18 printchar ist das Zeichen f r Beschleunigung bzw Abbremsung oder Die Funktion ru
44. d kann mit einer maximalen Spannung von 18V und einem maximalen Strom von 2A umgehen Der Controller hat zwei Eingangs Pins A und B bezeichnet mit MOTA und MOTB auf dem Bord Die Pins k nnen high oder low getrieben werden und der Motor reagiert entsprechend der unteren Tabelle Die Geschwindigkeit des Motors kann ber eine Pulsweitenmodulation PWM entweder am A oder am B Pin gesteuert werden A B Verhalten des Motors 0 0 Keine Bewegung 0 1 Drehtin einer Richtung 1 0 Drehtin die andere Richtung als oben 1 1 Keine Bewegung Tabelle 3 zeigt das Motorverhalten f r verschiedene logische Kombinationen am Motor Controller Der Motor Controller IC hat eine interne Temperatur berwachung und eine Schutz vor berhitzung Eine Sicherung auf dem Gertboard sch tzt vor berstrom Der Motor Controller ist im Schaltbild auf Seite A 4 zu sehen Im Funktionsblock Schema Bild 2 auf Seite 6 ist der Bereich f r den Motor Controller violett markiert Der Motor Controller und die Schraubanschl sse sind nahe beim oberen Rand des Bords und es gibt zwei Pins f r die Steuersignale auf 15 einem kleinen Stecker genau oberhalb von GP4 und GP1 auf dem Stecker J2 Die MOTA und MOTB Pins auf J5 sind die Eing nge des Motor Controllers es sind digita le Signale low oder high Die Schraubanschl sse oben auf dem Bord mit der Bezeichnung MOTA und MOTB sind die Ausg nge des Motor Controllers sie liefern den Strom f r den Motor Wenn der Motor
45. das Gertboard angezeigt Die Funktion get_adc kanal be nutzt spidev um den A D Wandler zu lesen Sie empf ngt drei Datenbytes und berechnet das Resultat eine Zahl zwischen 0 und 1023 wobei 0 OV und 1023 3 3V bedeutet Die Hauptschleife l uft 600 Mal mit einer kleinen Pause sleep von 0 05s so dass das Programm ca 30 Sekunden 600 0 05 l uft W hrend jedes Schleifendurchlaufs liest das Programm den A D Wandler und zeigt die gelesene Zahl und einen Balken aus Zeichen dessen L nge proportional zum Wert ist auf dem Bildschirm an Der Wert h ngt vom Widerstand des Potentiometers ab F r die Anzeige wird die Funktion display char reps adc_value spaces benutzt Eine Ver nderung des Potis w hrend des Programmlaufs ndert den gelesenen Wert und die Zahl der Zeichen die Balkenl nge auf der Anzeige 36 Vorschl ge zum Experimentieren ndern Sie die folgenden Werte und beobachten Sie was passiert e char ndern Sie das Zeichen in ein anderes Symbol in Zeile 30 e sleep 0 05 ndern Sie die 0 05 und sehen Sie was passiert in Zeile 56 dtoa py Der digital zu analog Konverter D A wird gesteuert indem 2 Bytes 16 Bit insgesamt ber die SPI Schnittstelle an ihn gesendet werden Das Programm benutzt einen Python Modul mit dem Namen spidev um die SPI Kommunikation zu realisieren Wir m ssen spidev zwei Zahlen bergeben die als Bytes je 8 Bit an den D A gesendet werden Der D A Wan
46. deutet die Eingangsspan nung ist gleich der Versorgungsspannung 3 3V f r das Gertboard Um das Gertboard f r diesen Test vorzubereiten m ssen Sie das Poti am analogen Eingang 0 wie beim Programm AnalogInput anschlie en Zus tzlich muss der UART des ATmega Chips mit dem Raspberry Pi verbunden werden Das digitale Pin 0 PDO auf dem Gertboard ist RX receive empfan gen und das digitale Pin 1 PD1 auf dem Gertboard ist TX transmit senden Diese Signale sind auch mit den Pins mit der Bezeichnung MCTX und MCRX genau oberhalb der Pins GP15 und GP14 auf dem Stecker J2 auf dem Gertboard verbunden Somit k nnen Sie zwei Jumper benutzen um TX des ATmega Chips mit GP15 und RX mit GP14 zu verbinden wie in Bild 33 zu sehen 47 OTA HSTE WI ni SERSEEEERS ES Fate nie 34 Viet BECH I ap mm a na 1u e EH Sa Fa mm ma hm Em Es Paspherry Pi Har BE 21 Get 2012 ES S hi P Ps Is P P di zl EEEa Bild 33 Verdrahtungsplan f r das Programm AnalogReadSerial GPIO14 und GPIO15 sind die Pins die der Raspberry Pi f r den seriellen Port des UART benutzt Wenn Sie die Tabelle f r die alternativen Funktionen betrachten Tabelle 1 Seite 11 sehen Sie dass GPIO14 als TX und GPIO15 als RX aufgelistet sind Das ist kein Fehler Diese Vertauschung ist notwendig weil die Daten die vom ATmega gesendet werden vom Raspberry Pi empfangen werden und umgekehrt Nun wie bringen wir den Raspberry Pi dazu D
47. dler setzt die Ausgangsspannung ent sprechend dem bergebenen Wert Ein Eingang von 0 ergibt 0V 255 ergibt 2 048V und da es linear ist ergibt 128 eine Spannung von 1 02V Die vorgegebenen Werte die wir an den D A Wandler senden werden in zwei Listen Variablen gespei chert e num_list enth lt das erste Byte unterschiedlich f r jeden Kanal common enth lt das zweite Datenbyte gleich f r jeden Kanal Der Benutzer w hlt den Kanal und danach nimmt das Programm in der Hauptschleife den ersten Wert aus jeder Liste und kombiniert diese Werte Bytel mit Byte2 Dann wird dieser Wert an den D A Wandler gesendet der sofort die gew nschte Spannung ausgibt bis die Taste Enter gedr ckt wird Das Programm l uft nun durch die Liste alle f nf Werte sendet die Daten zum D A und wartet auf die Tas te Beide Kan le werden am Programmende auf null zur ckgesetzt Vorschl ge zum Experimentieren Keine zu diesem Zeitpunkt Wenn Sie die Zahlen in den Listen ndern besch digen Sie das Pro gramm die Spannung am Ausgang stimmt dann nicht mehr mit den Zahlen die auf dem Bild schirm angezeigt werden berein Wenn Sie sehen m chten wie sie abgeleitet werden k nnen Sie in das Programm dad py in die Funktion dac_write schauen dad py Dieses Programm benutzt spidev um den A D und den D A Wandler unter Benutzung der SPI Ports auf dem Raspberry Pi zu steuern Zuerst werden die Verbindungsinformationen f r das Bord
48. e des Bords Diese blauen und grauen Angaben benutzen wir als Basis f r unseren Verdrahtungsplan der Ihnen die Pins zeigt die f r jedes Testprogramm miteinander verbunden werden m ssen Dieses Schema ist wesentlich klarer als ein Foto von einem voll best ckten und verdrah teten Bord Sehen Sie sich den wei en Text auf dem Foto in Bild 4 n her an oder den wei en Text auf Ihrem Gert board oder den blauen Text in Bild 5 Diese Beschriftung liefert die erforderlichen Informationen um die verschiedenen Bl cke auf dem Gertboard miteinander zu verbinden Fast alle Komponenten haben eine Beschriftung und wichtiger die Kontaktpfosten Pins haben eine Beschriftung Es ist nicht not wendig sich zu sehr f r einige Komponenten zu interessieren wie z B Widerst nde und Kondensatoren bezeichnet mit Rn und Cn wobei n eine Zahl ist Jedoch sind die Bezeichnungen f r Kontaktpfosten ICs Dioden und Schalter wichtig Dioden sind mit Dn bezeichnet D1 bis D12 sind f r Sie interessant das sind die LEDs Die LEDs sind nahe der linken Oberseite des Bords platziert Die Beschriftung ist ein wenig eng Jede LED hat einen Widerstand daneben und folglich hat jedes Dn ein Rm daneben Die LEDs sind leicht zu finden wenn das Bord mit Spannung versorgt ist da sie eine Reihe von hellen roten Lichtern bilden Siehe unten im Kapitel Stromversorgung auf dem Gertboard Seite 9 f r Informationen wie die Versorgung des Gert boards erfolgt Druckschalter
49. echseln Sie von ports zuports_rev e led drive 3 0 ports ndern Sie die in eine 1 22 Test der Ein Ausgabe I O Unsere zwei bisherigen Beispiele haben nur die Ports f r den Zugriff auf die Druckschalter und LEDs benutzt Das n chste Beispiel namens but led f r BUTton LED in C bzw butled rg py in Python zeigt uns wie ein Port nur als Eingang dient Die Idee ist dass ein Port zusammen mit seinem Schalter benutzt wird um ein Signal zu generieren und die Software anschlie end dieses Signal an einen anderen Port sendet der nur als Eingang zum Raspberry Pi dient Wir lesen beide Ports ein und zeigen Sie auf dem Bildschirm an L Mora NOTS MOT BL Fi Fuss max 24 Sperre ki 1 h caz zl F l m E SE SES 41 ga d JMi m E2 in H2 m LE ulu Eku u u u l ll 5 TGO CC t m u e Te EIS z mn Rospberr y Pi E Ze Gertboard EES NW J 21 021 2012 XSUSULARSL ESAS a r 11 Ji L Y n E H w wl E bm GR Bild 14 Verdrahtungsplan f r das Testprogramm butled das einen Schalterdruck erkennt und anschlie end diesen Schalterzustand auf dem Bildschirm und einer LED anzeigt Im Bild 14 ist der Verdrahtungsplan zu sehen Pin GPIO23 steuert 1 O Port 3 und GPIO22 steuert I O Port 6 somit wird GP23 auf dem Stecker J2 mit Pin B3 auf Stecker J3 verbunden und GP22 wird mit B6 verbunden
50. ed zwischen Funkti onsaufrufen immer gleich bleibt Wenn wir also am Ende eines Aufrufs von Loop einen Wert zuwei sen hat old max Led immer noch denselben Wert wenn das n chste Mal loop aufgerufen wird Der Anfangswert wird nur einmal zugewiesen bevor loop zum ersten Mal aufgerufen wird nicht jedes Mal wenn loop aufgerufen wird Das Verdrahtungsschema f r LEDmeter ist unten zu sehen e mi a 5 55 5 55 5 5 5 L en aH Fi ER E P Ip SI P Fara KEE VIRARE i EA uu aray n A s PI Ge b amp hEhkheDihassssss B ET Bild 34 Verdrahtungsschema f r das Programm LEDmeter Hochladen ist der bliche Weg und die LEDs zeigen die Position des Potentiometers 49 Wie geht es weiter Diese Beispiele haben die Oberfl che der faszinierenden Welt von Arduino nur angekratzt Sie erhalten unter http arduino cc en Tutorial HomePage viel viel mehr Informationen Weitere Informationen Weitere Informationen ber den Raspberry Pi und seine GPIO Ports sowie das Datenblatt f r den Pro zessor k nnen Sie hier erhalten http www raspberrypi org wp content uploads 2012 02 BCM2835 ARM Peripherals pdf Anhang A Schaltpl ne Wir haben die Schaltpl ne f r das Gertboard auf den folgenden Seiten ver ffentlicht Sie sind mit A 1 A 2 usw nummeriert Die Seitennummer befindet sich links unten auf jeder Seite 50 INOI KINOD JNOL2L d i Z LNO
51. er nicht ver ndert wird u U nicht exakt der gleiche Wert bei mehreren Messungen erscheint Bei 10 Bit Genauigkeit ist die Messung sehr empfindlich und die kleinste nderung wie z B ein Strom in einem benachbarten Netzkabel kann den gelesenen Wert beeinflussen dad Um sowohl den D A als auch den A D Wandler gleichzeitig zu testen sendet das Programm dad 17 unterschiedliche Digitalwerte an den D A Wandler 0 bis 255 in gleichen Abst nden dann zur ck bis auf 0 Die Ausgangsspannung wird vom A D Wandler eingelesen Sowohl der digitale Originalwert als auch der zur ckgelesene Analogwert werden angezeigt wobei der Balken den zur ckgelesenen Wert darstellt geteilt durch 16 wie in at od Die Balken sollten ein Dreieck auf dem Bildschirm bilden die Balken sind anfangs kurz werden anschlie end l nger und werden dann wieder k rzer D A und A D Tests in Python Die analog zu digital und digital zu analog Wandler sind mit den SPD Ports auf dem Raspberry Pi verbunden Das sind die alternativen Funktionen der GPIO Ports 7 und 8 Um atod py dtoa py und dad py zu benutzen muss SPI eingeschaltet sein und Sie m ssen einen Python Modul namens py spidev installieren Die Anleitung daf r finden Sie in der Datei README txt die in den heruntergeladenen Pythonprogrammen enthalten ist atod py Der Benutzer w hlt den zu benutzenden Kanal f r den analog zu digital Wandler A D aus dann wer den die Verbindungsinformationen f r
52. er_products html oder http raspi tv downloads Um sie direkt mit Ihrem mit dem Internet verbundenen Raspberry Pi zu bekommen wechseln Sie zuerst in das Verzeichnis in das die Programme installiert werden sollen Anschlie end tippen Sie in die Kommandozeile wget http raspi tv download GB_Python zip 13 Das sollte die kleine Datei GB Python zip herunterladen Tippen Sie nun unzip GB_Python zip cd GB_Python ls Das 1s listet alle Dateien im Verzeichnis auf Die meisten von ihnen enden mit py und sind Python Programme Die Datei README txt enth lt neben anderen Informationen eine Anleitung wie das Software Paket installiert wird das Sie zum Ausf hren der Python Programme ben tigen Wenn Sie das ben tigte Paket engl package installiert haben k nnen Sie die Programme ausf hren Wenn Sie z B das Programm 1eds rg py ausf hren m chten das die LEDs testet f r die Benutzung des RPi GPIO Pakets siehe unten tippen Sie in die Kommandozeile sudo python leds rg py Warum unterschiedliche Programmversionen Es gibt zwei General Purpose Input Output GPIO Pakete f r Python RPi GPIO und WiringPi f r Python Die Programme die in zwei Versionen kommen wie leds rg py und leds wp py benut zen jeweils diese unterschiedlichen Pakete Es ist sinnvoll beide Pakete zu installieren weil keines von beiden den vollen Umfang an M glichkeiten bietet Der Schwachpunkt von RPi GPIO ist das Fehlen des PWM Pulsweiten
53. erden die GPIO Ports 17 und 18 als Ausgang bzw PWM Ausgang konfiguriert Dann werden zwei Funktionen definiert get _adc liest die Spannung am Potentiometer unter Benutzung des A D Wandlers reset ports sichert das Zur cksetzen der Ports beim Verlassen des Programms Nun werden die Anfangswerte der Variablen gesetzt und die Verbindungsinformationen angezeigt Das Programm wartet auf die Best tigung des Benutzers bis es weiterarbeitet Wenn der Benutzer die Enter Taste dr ckt wird der SPI Port ge ffnet um die Spannung am Poti ber den A D einzulesen Bei einem Wert ber 511 wird 17 auf 0 gesetzt was die Drehrichtung des Motors auf Richtung 1 festlegt Andernfalls wird die Drehrichtung auf entgegengesetzt festgelegt Dann wird der PVVM VVert der an Port 18 gesendet werden soll berechnet ausgehend vom gelesenen Wert des A D Damit wird die Drehzahl des Motors gesteuert Nachdem der Wert f r den PWM an Port 18 gesendet wurde wartet das Programm 0 05 Sekunden und wiederholt danach die Hauptschleife mit dem Einlesen des Wertes vom A D Wandler Das passiert 600 Mal so dass das Programm ca 30 Sekunden l uft Die Hauptschleife istineinentry except Block eingeschlossen um das Schlie en der Ports 39 beim Dr cken von Ctrl C auf der Tastatur sicherzustellen Vorschl ge zum Experimentieren 1m Moment keine Decoder Der Decoder der durch das Programm decoder implementiert ist nimmt die drei Druckschalter als Eingang und
54. g ist wie in data GPIO_INO Das Makro TNP_ GPTO n muss f r eine Pin Nummer n aufgerufen werden damit das Pin benutzt wird Standardm ig wird der Mode des Pins dabei auf Eingang input gesetzt Wenn das Pin als Aus gang benutzt werden soll muss OUT_GPIO n aufgerufen werden nachdem INP_GPIO n aufgeru fen wurde Python Code berblick Die Python Software zusammen mit den Teilen dieses Handbuchs die die Python Programme beschrei ben wurden von Alex Eames von Raspi TV geschrieben Wir sind ihm sehr dankbar f r seine Hilfe Diese Software ist in Python 2 7 geschrieben und sie ist kompatibel mit allen aktuellen Revisionen des Raspberry Pi Computers und Gertboards Es erfordert sudo Benutzerrechte um den SPI Bus und die GPIO Ports zu benutzen Der Python Code enth lt verschiedene Software Pakete um auf die unterschiedlichen Funktionen des Gertboards zugreifen zu k nnen Um die GPIO Ports anzusprechen muss entweder RPi GPIO oder WiringPi f r Python installiert sein oder beides Um den digital zu analog und den analog zu digital Konverter zu benutzen der den SPI Bus benutzt muss der Modul py spidev installiert sein Eine Anleitung wie das erfolgt ist im Python Programm enthalten Herunterladen der Software Um die Python Gertboard Software mit einem Internetbrowser oder mit einem anderen Computer als einem Raspberry Pi herunterzuladen besuchen Sie http www gertbot com oth
55. gten Speicher wieder freigibt Makros Ingb_common h gb spi hund gb pvm h sind eine Zahl von Makros die den verschiedenen Teilen der belegten Speicherbereiche Arrays sprechende Namen geben Diese Makros werden benutzt um alles m gliche zu tun vom Setzen eines GPIO Ports als Eingang oder Ausgang bis zur Steuerung der Taktfrequenz des Pulsweitenmodulators 12 Makroname Typ Zweck Seite INP GPTO n E aktiviert GPIO Pin n als Eingang 13 OUT_ GPTO n E benutzt nach INP_GPIO n setzt Pin n als Ausgang 13 SET GP1O ALT n a E nach INP_GPIO n setzt alternative Funktion f r Pin n 29 GPIO_PULL W setzt den pull Code pull ziehen 19 GPIO_PULLCCLKO W Auswahl welchen Pins der Pull Code zugeordnet ist 19 GPIO_INO R Eingangswerte lesen 19 GPIO_SETO W Auswahl welche Pins auf 1 high gesetzt werden 21 GPIO_CLRO W Auswahl welche Pins auf 0 low gesetzt werden 21 Tabelle 2 Allgemein benutzte Makros ihr Typ Zweck und Ort in diesem Handbuch Tabelle 2 zeigt eine Zusammenfassung der fter benutzten Makros und gibt die Seitennummer an auf der die Makros n her erl utert werden Der Typ gibt an wie das Makro benutzt wird E bedeutet executed ausgef hrt und die Benutzung ist wie in INP_GPIO 17 VV bedeutet written to zugewiesen an die Benutzung ist wie in GPIO_PULL 2 R bedeutet read lesen von die Benutzun
56. ingang auf high gesetzt wird und der Motor in Drehrichtung 1 dreht wie in der Tabelle f r den Motor Controller beschrieben Tabelle 3 Seite 27 Dummerweise wird diese Drehrichtung in den Kommenta ren im Programm als backwards r ckw rts bezeichnet H here A D Werte 512 bis 1023 f hren dazu dass der Motor B Eingang auf low gesetzt wird und der Motor in entgegengesetzter Richtung dreht Diese Richtung wird im Programm mit forwards vorw rts bezeichnet Einfache arithmetische Berechnungen transformieren A D Werte nahe bei 511 in niedrige Motordrehzahlen und A D Werte nahe den Endpunkten 0 und 1023 in hohe Drehzahlen indem der zum PWM gesendete Wert ver ndert wird Potmot Test in Python Die Position des Potis die durch den A D Wandler gelesen wird bestimmt die Drehrichtung und die Drehzahl des Motors PWM Wert wie folgt Der mittlere Wert 511 bedeutet Stillstand des Motors 1023 bedeutet maximale Drehzahl in Richtung 1 0 bedeutet maximale Drehzahl in entgegengesetzter Richtung Das Programm potmot wp py benutzt spidev um den A D zu steuern und WiringPi f r Python um den Motor mit Hardware PWM zu steuern Im Endeffekt ist potmot eine vereinfachte Kombination aus den Programmen atod py und motor wp py Es wurde dahingehend vereinfacht dass es keine Bildschirmausgaben ber die A D Werte oder die Drehrichtung des Motors gibt Zuerst importiert das Programm die ben tigten Module spidev und wiringpi anschlie end w
57. ins ober und unterhalb der Puffer Chips in 4 Pin Paare aufge teilt ist Die Paare an U3 sind mit B1 bis B4 bezeichnet die an U4 sind B5 bis B8 und die an U5 sind B9 bis B12 Das 1 ist f r Port 1 B2 f r Port 2 usw Um Port n als Eingang zu nutzen aber nicht f r die Benutzung der Druckschalter wenn n 1 2 oder 3 ist wird ein Jumper auf das Pin Paar in Bz in der Reihe die mit in bezeichnet ist gesteckt unterhalb des entsprechenden Puffer Chips Um Port n als Ausgang zu betreiben wird ein Jumper auf das Pin Paar in Bn in der Reihe die mit out bezeichnet ist gesteckt oberhalb des entsprechenden Puffer Chips Eupen 6l y Sr B Sam MREP n n 24600000 I IS CI C k A e u i fz ZIE ZE reel ge amp r KI m ez 1 45 00 m mm m u Bild 10 Beispiel der Port sind m Konfiguration wobei die Ports 1 bis 3 als Ausgang und die Ports 10 und 11 als Eingang gesetzt Ein Beispiel sehen Sie in Bild 10 Die Ports 1 2 und 3 sind als Ausgang konfiguriert die Jumper sind auf Bl B2 und B3 auf der out Seite des Chips U3 gesteckt Die Ports 10 und 11 sind als Eingang kon figuriert die Jumpers sind auf B10 und B11 auf der in Seite von U5 gesteckt Bild 10 zeigt auch wa rum wir lieber Schemas anstatt Fotos benutzen um die Verbindungen auf dem Bord zu veranschauli chen Der Eingangs Jumper
58. ips Der ATmega und die mit ihm verbundenen Steckerleisten sind im Schaltplan auf Seite A 6 abgebildet Programmierung des ATmega Die Programmierung des ATmega Microcontrollers ist einfach wenn Sie einmal die Infrastruktur ge schaffen haben aber es erfordert einiges an Software die auf Ihrem Raspberry Pi installiert werden muss Wir sind Gordon Henderson von Drogon Systems sehr dankbar f r die Ausarbeitung dessen was notwendig war und die Lieferung der angepassten customized Software Sein System erlaubt es Ihnen die Arduino IDE Integrated Development Environment integrierte Entwicklungsumgebung auf dem Raspberry Pi zu benutzen um Programme f r den ATmega Chip zu entwickeln und auf das Gertboard hochzuladen Alle ben tigte Software zusammen mit der Anleitung ist verf gbar unter https projects drogon net raspberry pi gertboard F r den Rest dieses Abschnitts setzen wir voraus dass Sie die Arduino IDE heruntergeladen und erfolg reich installiert und konfiguriert haben so wie es auf Gordons Website beschrieben ist und wir fahren von hier aus fort Um mit dem ATmega Chip zu beginnen starten Sie die Arduino IDE Das sollte leicht sein wenn die Installation des Arduino Pakets erfolgreich war haben Sie einen neuen Punkt Arduino IDE in Ihrem Startmen unter Electronics Die genaue Version der IDE h ngt von Ihrem Betriebssystem ab Die 41 berwiegende Mehrheit der Raspberry Pi Benutzer verwendet Raspbia
59. konvertiert wurde und benutzt anschlie end diesen Wert als Pause zwischen dem Ein und Ausschalten einer LED Somit blinkt die LED umso schneller desto kleiner die Spannung am analogen Eingang ist F r dieses Beispiel ben tigen Sie ein Potentiometer Das aus dem Test f r den A D Wandler funktioniert hier ebenfalls gut Die Kommentare im Programm AnalogInput sagen aus den Schleifkontakt des Potis mit dem analogen Pin 0 PCO auf dem Gertboard und die u eren Anschl sse mit 5V und Masse zu verbinden Erinnern Sie sich Sie m ssen 3 3V anstatt 5V benutzen da wir den Chip mit 3 3V betreiben Das Schema unten zeigt wie das Gertboard verdrahtet werden muss um das Programm nach dem Hochladen zum Laufen zu bringen 46 Sp d Tn aKIKIKDN ee le su IS Get tbird TUTU 5 d i HH HP SUSUN BBEBBERRBA Li a il EEba Eesssossezsazi Bild 32 Verdrahtungsplan f r das Programm Analoginput Programm AnalogReadSerial unter Benutzung von Minicom Einige der Arduino Programme lesen oder schreiben Daten ber den seriellen Port bzw UART Ein Bei spiel ist AnalogReadSerial das sich im Men File gt Examples gt Basics befindet Dieses Programm setzt die Baudrate auf 9600 liest anschlie end in einer Schleife einen Wert vom analogen Eingang an Pin 0 and sendet diesen Wert zum seriellen Port auch als UART bezeichnet Der eingelesene Wert liegt zwischen 0 und 1023 0 bedeutet eine Eingangsspannung von 0V und 1023 be
60. l 1 en e o GER E R EI bin a R a 4 222 EZ I 7 CR s45 Raspberry P zis Gertboord 375 21 Oct 2012 5352 mul EI bi m ul Bapa Bild 26 Verdrahtungsschema f r den Decodertest Decoder Test in C In der Haupt main Routine f r decoder starten wir wie immer mit der Anzeige der ben tigten Ver bindungen f r das Gertboard Danach wird setup_io aufgerufen um die GPIO Ports zu initialisieren Anschlie end rufen wir setup_gpio auf um GPIO25 bis 23 f r die Benutzung mit den Druckschal tern zu konfigurieren indem sie als Eingang gesetzt werden und ein pull up Widerstand geschaltet wird wie auf Seite 19 beschrieben und um GPIO11 bis GP7 GPIO4 GPIO1 und GPIOO als Ausg nge zu 40 setzen wie auf Seitel3 beschrieben Nun wird eine Schleife abgearbeitet in der wir den Status der Schalter einlesen und die LEDs entsprechend leuchten lassen etwaige leuchtende LEDs m ssen vorher ausgeschaltet werden Wir schalten die LEDs mittels GPIO_SETO und GPIO_CLRO ein und aus wie auf Seite 21 beschrieben Zur Zeit der Erstellung des Handbuches gibt es keinen Decodertest in Python ATmega Microcontroller Das Gertboard besitzt einen Atmel AVR Microcontroller einen 28 Pin ATmega bezeichnet mit U8 im unteren linken Bereich des Bords Das kann einer der folgenden sein Tmega48A PA
61. m so dass ein kleiner Wert der zum PWM gesendet wird ein Signal bewirkt das die meiste Zeit auf high ist Auf diese Art kann derselbe Code benutzt werden um die Motordrehzahl langsam zu steigern aber diesmal in der vorw rts Richtung entsprechend der Tabelle auf Seite 27 um dann wieder die Drehzahl zu vermindern Zum Schluss wird der PWM deaktiviert und die GPIO Schnittstelle geschlossen Motortest in Python Die Motor Testprogramme rg py undmotor wp py sind ziemlich unterschiedlich weil das RPi GPIO Paket noch nicht Hardvvare Pulsvveitenmodulation PWM unterst tzt aber WiringPi f r Python tut dies es funktioniert aber es ist noch nicht dokumentiert Somit benutzt motor rg py die RPi GPIO Version Software PWM die sich in der Funktion run_motor befindet Wenn Sie beide Programme ausprobieren bekommen Sie wahrscheinlich bessere Ergebnisse mit motor wp py der WiringPi f r Python Version Beide Versionen benutzen die Python 3 Funktion print die wie folgt importiert wird from future import print function Ohne diese Funktion ist es schwierig Zeilenumbr che und Leerzeichen bei der Bildschirmausgabe zu verhindern Das hei t dass alle Anzeigebefehle als print geschrieben werden m ssen anstatt ein fach als print weil sie jetzt Funktionsaufrufe sind und nicht einfache Befehle motor rg py Software PWM Nach dem Import der ben tigten Module definieren wir welche Ports benutzt werden sollen 18 und 17 wie oft jede S
62. m wird aus zwei oder mehr C Quelldateien bersetzt Die Datei gb common c die eine Header Datei gb_common h referenziert enth lt Code der von allen Funktionsbl cken auf dem Bord benutzt wird Jedes Testprogramm hat eine C Datei mit speziellem Code nur f r diesen Test folglich finden Sie die Hauptfunktion main hier Einige Testprogramme benutzen eine spezielle Schnittstelle interface z B den SPI Bus Diese Testprogramme haben eine zus tzliche C Datei die spezifischen Code f r dieses Interface enth lt diese Dateien sind gb spi c f r den SPI Bus und gb_pwm f r den Pulsweitenmodu lator In jedem Abschnitt ber die einzelnen Funktionsbl cke ist der spezifische Code f r den Block erl utert Da alle Testprogramme die gemeinsame Quelldatei gb _common c verwenden wird hier ein berblick ber diese Datei gegeben Um das Gertboard ber die GPIO Ports zu benutzen muss das Testprogramm zuerst setup io aufrufen Diese Funktion belegt diverse Speicherbereiche Arrays und ruft anschlie Bend mmap auf um die Arrays mit den Ger ten zu assoziieren die gesteuert werden sollen wie z B den GPIO Port SPI Bus PVVM Pulsvveitenmodulator usw Im Resultat schreibt das Programm Daten in diese Arrays um die Ger te zu steuern oder sendet Daten zu ihnen oder es liest Daten aus den Arrays um Statusbits abzufragen oder Daten von den Ger ten zu lesen Am Ende eines Testprogramms sollte aufgerufen werden das den bele
63. m GND oder Pin auf dem Bord Jetzt ben tigen wir ein Signal um den Treiber zu steuern F r den ocol Test benutzen wir GPIO4 um den Open Kollektor Treiber zu steuern Sie k nnen nat rlich irgendein logisches Signal benutzen Dazu verbinden wir GP4 auf J2 mit RLY1 auf J4 um einen anderen Treiber n zu testen muss die Masseseite der Schal tung mit RLYn auf dem Stecker rechts auf dem Bord verbunden werden und GP4 auf Stecker J2 mit RI vn auf J4 Nun wenn RLY1 auf J4 auf low gesetzt wird erh lt die Schaltung keinen Strom und ist aus Wenn RLY1 auf J4 high wird verbindet der Open Kollektor Treiber ber Transistoren die Masseseite der 25 Schaltung mit der Masse des Bords und weil diese mit der Masse der externen Stromversorgung verbun den ist kann Strom durch die Schaltung flie en f P 2 4184131451818 LS LE MAD m TEL P E r L l 5 al r ns Di 4 M Ir oe Eis a Be CH ee JS kk Pas J 4 1 h al KU L 1594 Ima 1 al 8 EX m r Sie ni r it Baum z u mizi eb Ge a m T u ch ep tes ier Ivo ul NEESS SEN roz ku sky pss upa uu Umi x ZO T F ba r 1932 Ka una a Me Ihre Schaltung my 1 7 11 lo S BI ist hier K 1 I m w 4 Ihre Strom pe mite SENZEBELERSEN o R versorgung Y CH KE K TT er ist hier s gspderr yr A A Ek de Im xu et kb wr
64. m Zugriff auf die alternativen Funktionen zu erhalten Wir erw hnen die PC Bus Benutzung von GPIOO und 1 oder GPIO2 und GPIO3 f r rev2 RPis in Tabelle 1 nicht deshalb weil der C Bus in den Testprogrammen benutzt wird sondern weil jeder einen 18006 pull up Widerstand auf dem Raspberry Pi hat und das ihre Benutzung durch die Druckschalter verhindert siehe Kapitel gepufferter I O LEDs und Druckschalter f r weitere Informationen 10 Label on GB Port on RPil Port on 2 Alt function which alt 3 GE GPIO3 GP OT SE ora GPO oro si GPO oo GPO ono7 GI02 GI es eros G05 RE pu Toros sis J J GPO 6105 j Tabelle 1 Zuordnung GPIO Ports zu GP Beschriftung und alternative Funktionen der GPIO Ports GB bedeutet Gertboard RPil bedeutet Raspberry Pi rev1 RPi2 bedeutet Raspberry Pi rev2 Schemata Obwohl es Schaltpl ne oder Schemata f r einige der Funktionsbl cke des Bords im Handbuch gibt sind sie doch Vereinfachungen der aktuellen Schaltungen W hrend diese vereinfachten Schemata und die Erl uterungen im Text f r die meisten Anwendungen des Gertboards gut genug sind wird es gelegent lich Fragen geben die nur dann beantwortet werden k nnen wenn man das Bord genau kennt Darum haben wir am Ende des Handbuchs im Anhang A die genauen Schaltpl ne ver ffentlicht Diese Seiten sind im Q
65. mern auf dem GPIO Stecker J1 bereinstimmen Diese Beschriftungen sind jedoch wichtig Sie korrespondieren mit den Signalnamen die vom BCM2835 dem Prozessor auf dem Raspberry Pi RPi benutzt werden Das Signal GPIOn im BCM2835 Datenblatt korrespondiert mit dem Pin mit der Bezeichnung GPn auf dem Stecker J2 Zumindest war das so bei der ersten Version des Raspberry Pi rev1 Beginnend ab September 2012 wurde die Version 2 des Raspberry Pi rev2 ausgeliefert Bei rev2 des RPis wurden einige der GPIO Pins ge ndert Der GPIO Port der gew hnlich durch GPIO21 gesteuert wurde wird nun durch GPIO27 gesteuert Die Ports die gew hnlich durch GPIOO and GPIOI gesteuert wurden werden nun durch GPIO2 and GPIO3 gesteuert Der Rest blieb derselbe Die ersten drei Spalten von Tabelle 1 unten fassen die aktuelle Situation zusammen Einige der GPIO Pins haben eine alternative Funktion von der in manchen Testprogrammen Gebrauch gemacht wird Diese werden ebenfalls in Tabelle 1 in den letzten beiden Spalten gezeigt Die Ports die in der Spalte Alt function alternative Funktion keine Angaben haben werden nur f r allgemeine Ein Ausgabezwecke benutzt In den C Testprogrammen benutzen wir Makros um Zugriff auf die alter nativen Funktionen der GPIO Ports zu erlangen Dies wird im Kapitel f r analog zu digital und digital zu analog Konverter D A und A D Test in C Seite 35 erkl rt In Python benutzen wir Packages Pro grammpakete u
66. modulator der mit dem Motorprogramm benutzt wird Der Schwachpunkt von WiringPi ist das Fehlen der pull up Funktion die f r die Benutzung der Schalter ben tigt wird Wenn Sie die gesamte Funktionalit t des Bords benutzen wollen m ssen Sie beide Pakete installieren In manchen Programmen z B Leds und ocol wird kei ne spezielle Funktion benutzt und Sie k nnen entweder das eine oder das andere Paket einsetzen Die Programme die das RPi GPIO Paket benutzen hei en filename rg py w hrend die die das Wi ringPi f r Python Paket benutzen fi lename vp py hei en Hier ist eine Liste aller Python Testprogramme zur Zeit der Erstellung des Handbuchs Buttons rg py Schalter Programm benutzt RPi GPIO leds rg py LED Programm benutzt RPi GPIO leds wp py LED Programm benutzt WiringPi butled rg py Schalter und LED Programm benutzt RPI GPIO motor rg py Motor Programm benutzt die Software PWM und RPi GPIO motor wp py Motor Programm benutzt Hardware PWM und WiringPi ocol rg py Relais Schalt Programm benutzt RPi GPIO ocol wp py Relais Schalt Programm benutzt WiringPi atod py Test f r analog zu digital Konverter benutzt SPI mit spidev dtoa py Test f r digital zu analog Konverter benutzt SPI mit spidev dad py Test f r D A and A D benutzt SPI mit spidev potmot py Test f r A D und Motor benutzt WiringPi und spidev Gepufferte Ein Ausgabe buffered I O LEDs und Druckschalter
67. n Dieses Programm buttons rg py ist z Z nur unter Benutzung des RPi GPIO Paketes verf gbar weil die pull up Funktion in WiringPi f r Python noch nicht existiert Die Schalter k nnen ohne diese Funktion nicht benutzt werden Zuerst importiert das Programm den RPi GPIO Modul der f r die GPIO Steuerung ben tigt wird Da nach setzt das Kommando GPIO setmode GPIO BCM das BCM Nummerierungs Schema f r die Pins Das Ergebnis ist dass die Pin Nummern im Python Code die Nummern sind die der BCM2835 der Raspberry Pi Prozessor benutzt um die Pins zu referenzieren Andererseits beziehen sich die Pin Nummern im Python Code auf die Pin Nummern des Pfostensteckers J1 was dieselben sind wie die des P1 Steckers auf dem RPi Die n chsten zwei Zeilen konfigurieren die Ports 23 25 mit pull up Widerst nden for 1 in range 23 26 GPIO setup 1 GPIO IN pull up down GPTO PUD_ Beachten Sie bitte dass in Python bei for Schleifen der bis VVert um 1 h her sein muss als die Schleife laufen soll Wenn im obigen Beispiel die Variable i von 23 bis 25 laufen soll muss die obere Grenze also 26 betragen Als n chstes werden die Verdrahtungsangaben auf dem Bildschirm angezeigt Wenn der Benutzer diese Daten best tigt hat werden die Anfangswerte f r die Variablen button_press und previous_status gesetzt Nun l uft eine Schleife while bis 19 Mal ein Schalter ein bzw ausgeschaltet wurde Bei jedem
68. n das auf Debian wheezy basiert und wir gehen von jetzt ab davon aus dass Sie das verwenden Die Versionsnummer wird im Titelbalken angezeigt f r wheezy ist sie 1 0 1 Als erstes m ssen Sie die IDE konfigurieren damit sie mit dem Gert board arbeitet Gehen Sie zum Men punkt Tools gt Board und w hlen Sie die Gertboard Option mit dem Chip den Sie benutzen Es gibt die Auswahl f r den ATmegal68 und den ATmega328 die am meisten verwendeten auf dem Gertboard Gehen Sie anschlie end zum Men punkt Tools gt Programmer und w hlen Sie Raspberry Pi GPIO Arduino Pins auf dem Gertboard Alle Ein und Ausgangspins des ATmega Chips sind mit dem Stecker J25 links auf dem Bord verbun den Sie sind mit PCn PDn und PBn bezeichnet wobei n die Nummer ist Die Bezeichnung stimmt mit der Pinbelegung des ATmega168 328 Chips berein Die Arduino Welt bezieht sich jedoch nicht direkt auf die Pinnummern der Chips Stattdessen wird eine abstrakte Bezeichnung der digitalen und analogen Pinnummern verwendet die unabh ngig vom physischen Ger t ist Das erlaubt es Code der f r ein be stimmtes Arduino Bord geschrieben wurde einfach f r ein anderes Arduino Bord zu verwenden das einen Chip mit einer anderen Pinbelegung hat Darum m ssen Sie wissen wie die Arduino Pinnummern mit den Bezeichnern auf dem Gertboard bereinstimmen wenn Sie das Gertboard mit der Arduino IDE benutzen Die Tabelle unten zeigt diese Zuordnung GB bedeutet Gertboa
69. n Loop steuert die wiederholten Aufrufe der Funktion run motor es erfolgen 400 Aufrufe mit den vorgegebenen Werten Nachdem die Funktionen definiert sind werden die Verdrahtungsinformationen angezeigt und das Pro gramm wartet auf die Enter Taste mit der der Benutzer den Test freigibt Danach wird die Funktion run_loop vier Mal aufgerufen wobei die Motordrehzahl von 5 bis 95 und dann wieder zur ck gesteuert wird und zwar in jeder Drehrichtung Danach werden die Ports auf AUS gestellt und zur ckge setzt Vorschl ge zum Experimentieren ndern Sie diese Werte und beobachten Sie was passiert run_loop 5 95 1 18 ndern Sie das in ein anderes Zeichen run_loop 5 95 1 18 ndern Sie die 5 in eine gr ere Zahl lt 95 run loop 5 95 1 18 ndern Sie die 95 in eine kleinere Zahl aber gr er als die Zahl die an Stelle der 5 steht motor wp py Hardware PWM Der Raspberry Pi hat einen verf gbaren Hardware PWM Port GPIO18 Wir benutzen Port 17 um die Drehrichtung zu steuern und Port 18 um das Pulsen zu steuern Der erste Teil des Programms importiert die erforderlichen Module einschlie lich der Python 3 Funktion print erl utert weiter oben im Abschnitt f r motor rg py Nach der Initialisierung von WiringPi wird Port 18 mittels wiringpi pinMode 18 2 in den PWM Modus gesetzt und Port 17 wird als normaler Ausgang konfiguriert Dann werden beide Ports
70. n Sie eine Br cke Jumper auf die oberen beiden Pins von Stecker J7 stecken Er ist in der N he der rechten unte ren Ecke des Bords siehe Foto und Schema in Bild 7 Die Open Kollektor und Motor Controller k n nen h here Spannungen verarbeiten und haben Anschl sse f r eine externe Stromversorgung Bild 7 Jumper f r die Stromversorgung gesteckt in J7 Foto links Diagramm rechts Das Schema auf der rechten Seite von Bild 7 ist unser erstes Beispiel eines Verdrahtungsplanes basierend auf dem blauen und grauen Bordschema Diese Schemata markieren die Pins mit schwarzen Kreisen um die entsprechenden Pins auf dem Bord und zeigen Verbindungen mit schwarzen Linien zwischen den Kreisen an Ob dabei ein Verbindungsdraht oder ein Jumper benutzt wird wird hier nicht dargestellt Generell sollte eine Br cke Jumper benutzt werden wenn die zwei zu verbindenden Pins direkt neben einander liegen GPIO Pins Der Stecker J2 rechts vom Text Rasberry Pi Gertboard erm glicht den Zugriff auf alle I O Pins des GPIO Steckers Der Stecker J1 hat 26 Pins der Stecker der das Gertboard mit dem Rasberry Pi verbin det aber der Stecker J2 hat nur 17 Pins 3 der Pins von 11 sind Stromversorgung 3 3V and 5V und Masse 6 Pins sind DNC do not connect nicht verbinden Die Beschriftung dieser Pins GPO GPI GP4 GP7 usw sieht anfangs ein wenig willk rlich aus weil es offensichtlich ein paar L cken gibt und die Zahlen nicht mit den Pin Num
71. n collector erm glicht den Funktionstest der Open Kollektor Treiber Die Python Version kommt in zwei Varianten ocol rg py undocol wp py Wie ben tigten etwas das der Treiber ein und ausschalten kann und so bauten wir eine kleine Schal tung aus zwei LEDs und einem Serienwiderstand Das ist die kleine Schaltung rechts auf dem Gertboard im Bild 16 Wenn es verbunden ist betr gt die Spannung ber jeder LED ein wenig ber 3V und wir benutzten eine 9V Batterie als Stromversorgung und berechneten einen Serienwiderstand von rund 906 damit ein passender Strom durch die LEDs flie t Sie k nnen nat rlich irgendeine Schaltung f r diesen Test benutzen achten Sie nur darauf dass die Spannung der Stromversorgung f r die Schaltung passt das ist innerhalb von 50V 500mA ist die Grenze f r die Treiber Um die Ger te mittels Open Kollektor Treiber ein oder auszuschalten sagen wir unter Verwendung von Treiber 1 muss zuerst gepr ft werden ob das Ger t die Schaltung mit der externen Stromversor gung funktioniert Dann bleibt die Plusseite der Schaltung an Plus der externen Stromversorgung ange schlossen wird aber zus tzlich mit einem der RPWR Pins auf dem Stecker an der rechten Seite des Bords verbunden die sind alle miteinander verbunden Trennen Sie die Masseseite der Schaltung von der Stromversorgung und verbinden Sie sie mit RLY1 auf dem Stecker J12 rechts auf dem Bord Verbin den Sie die Masse der externen Stromversorgung mit eine
72. n m ssen 11 Um die Software zu erhalten platzieren Sie die Datei an die gew nschte Stelle f r die Gertboard Software auf Ihrem Raspberry Pi Computer Anschlie end entzippen Sie die Datei indem Sie die fol gende Kommandozeile in einem Terminalfenster des RPi eintippen ersetzen Sie den Dateinamen aus dem Beispiel durch den tats chlichen Namen der zip Datei die Sie heruntergeladen haben unzip gertboard_sw_20120725 zip Es wird ein neues Verzeichnis angelegt gertboard_sw Wechseln Sie in dieses Verzeichnis mittels cd gertboard_sw und lassen Sie den Inhalt anzeigen 1s Sie sehen eine Reihe von C Dateien und eine Make Datei C Dateien sind Programmdateien Quellcode die erst bersetzt compiliert werden m ssen bevor sie auf dem Prozessor ausgef hrt werden k nnen Im Fall des Raspberry Pi ist der Prozes sor ein ARMI1 Die Make Datei sorgt f r die bersetzung des C Quellcodes in ein ausf hrbares Pro gramm Tippen Sie make all Dieser Befehl bersetzt den Quellcode in ein ausf hrbares Programm Um es zu starten z B das Pro gramm leds das die LEDs testet tippen Sie sudo leds Das sudo muss verwendet werden weil der Zugriff auf die GPIO Ports spezielle Rechte erfordert sudo stattet das Programm leds mit diesen Rechten aus Die Eingabe vor Leds bedeutet den Aufruf des Programms aus dem aktuellen Verzeichnis Jeder Funktionsblock hat mindestens ein Testprogramm das mit ihm funktioniert Jedes Testprogram
73. ogramm AnalogReadSerial unter Benutzung von Minicom 47 ProBraImiifiiLEDIiot ii say aa Azada eege 48 UE 50 Weitere Informationen 50 Anhang A Schaltpl ne ara Iron 50 Gertboard berblick y asa ER K a Zi m s nh a l HN QANAALALALMARAL AD A0C CAR DAC yar Pee Ber D PB1 PBC Pur te Por Po P02 CA pcs PC4 Pc PC Pei Bild 1 Gertboard und Raspberry Pi Das Gertboard ist ein Ein Ausgangs V O Erweiterungsbord f r den Raspberry Pi Computer Es passt auf die GPIO Pins General Purpose VO Ein Ausg nge f r allgemeine Zwecke des Raspberry Pi die Doppelreihe Pins in der oberen linken Ecke ber einen Sockel auf der R ckseite des Gertboards Etwas Vorsicht ist beim Verbinden der beiden Komponenten geboten Es passiert leicht dass nur eine Reihe von Pins in den Sockeln steckt aber es m ssen beide Reihen verbunden werden Da das Gertboard die Stromversorgung ber diese GPIO Pins bekommt ben tigt das Raspberry Pi RPi eine Stromversor gung die mindestens 1A Strom liefern kann Das Gertboard besitzt eine Reihe von Funktionsbl cken die miteinander auf vielf ltige Weise ber Pfos tenstecker verbunden werden k nnen Die Funktionsbl cke sind 12 x gepufferte Ein Ausg nge I O 3 x Druckschalter 6 x Open Kollektor Treiber 50V 0 5A 18V 2A Motors
74. outinen set pwm0 und force_pwmO setzen den Wert der die Taktrate des PWM steuert set_pwmO setzt den Wert wobei zuerst gepr ft wird ob er zwischen 0 und 1024 liegt aber da es nur bestimmte Punkte im PWM Takt gibt bei denen ein neuer Wert gesetzt wird hat das Setzen eines Wertes keinen Effekt wenn kurz danach ein zweiter Wert gesetzt wird Die Routine force pum0 be sitzt zwei Argumente ein neuer Wert und ein neuer Modus Es schaltet den PWM ab setzt anschlie end den Wert und schaltet den PWM im neuen Modus wieder ein Dabei werden an strategischen Punkten Pausen eingelegt um der Hardware Gelegenheit zu geben die Werte zu bernehmen Die Routine pwm_off schaltet den PWM aus Der Code f r das Motorprogramm befindet sich inmotor c In der Hauptroutine main werden zuerst die n tigen Verbindungen f r den Test auf dem Bildschirm angezeigt danach wird setup_io aufgeru fen um die GPIO Schnittstelle zu ffnen Danach wird setup_gpio aufgerufen um GPIO18 als PWM Ausgang zu konfigurieren und GPIO17 als normalen Ausgang F r den zweiten werden sowohl INP_GPIO als auch OUT GPTO benutzt siehe Seite 13 f r mehr Informationen Um GPIO18 zu kon figurieren wird zuerst INP GPTO 18 benutzt um das Pin zu aktivieren Eine der alternativen Funkti onen von GPIO18 ist es als Ausgang f r den PWM zu fungieren Das ist Alternative Nr 5 darum benut zen wir das Makro SET_GPIO_ALT 18 5 um die alternative Funktion zu aktivieren siehe Tabel
75. rd Arduino Pin GB Pin Arduino Pin GB Pin Arduino Pin GB Pin 0 PDO 7 PD7 AO PCO 1 PDI 8 PBO Al PCI 2 PD2 9 1 2 2 3 10 2 4 4 11 PB3 A4 PC4 5 PD5 12 PB4 A5 PC5 6 PD6 13 PBS Tabelle 4 Die Zuordnung zwischen Arduino Pinnummern und Pins auf dem Gertboard In Programmen werden digitale Pins nur mit einer Nummer bezeichnet Zum Beispiel digitalWrite 13 HIGH setzt Pin 13 PB5 auf dem Gertboard auf logisch 1 In der Arduino Welt ist LOW logisch 0 und HIGH logisch 1 Die analogen Pins werden mit AO bis A5 bezeichnet Um also das analoge Pin 0 PCO auf dem Gertbo ard zu lesen muss man das folgende Kommando benutzen value analogRead A0 Ein paar Programme sketches mit denen Sie starten k nnen Ein sketch ist die Bezeichnung die Arduino f r ein Programm benutzt Es ist der Code der auf das Arduino Bord hochgeladen und dort ausgef hrt wird oder wie in unserem Fall der ATmega Microcontroller auf dem Gertboard Werfen wir einen Blick auf ein einfaches Programm Blink das eine LED ein und ausschaltet Es ist in der Arduino IDE ber den Men punkt Datei gt Examples gt Ba sics verf gbar Wenn Sie es ausw hlen erscheint ein neues Fenster mit dem Blink Code Es gibt nur zwei Funktionen in dem Programm setup und loop Diese werden f r alle Arduino Programme ben tigt setup wird einmal gleich zu Beginn ausgef hrt und 1oop wird wiederholt ausgef hrt
76. riable button_press und zeigt die neuen Werte auf dem Bildschirm an Der Draht von U3 out B3 Pin 1 zu BUF6 im oberen Stecker verbindet die LED mit dem Schalter damit sie leuchtet und der andere Eingang Port 22 auf high geht wenn der Schalter gedr ckt wird Die Werte werden auf dem Bildschirm angezeigt wie beim Programm buttons Normalerweise m ssten wir immer gleiche Werte f r GPIO22 und GPIO23 sehen n mlich 00 oder 11 Aber wie im C Beispiel sehen wir 01 oder 10 Wenn das passiert wechselt die zweite Stelle zuerst auf den neuen Wert und kurz darauf die erste Stelle Das ist umgekehrt wie im C Beispiel Wa rum Im Python Programm werden die Werte in folgender Zeile eingelesen status list str GPIO input 23 str GPIO input 22 Das verursacht das Lesen von GPIO23 vor GPIO22 Wenn der Schalter gedr ckt oder ge ffnet wird beh lt zwischen den beiden Lesevorg ngen GPIO23 noch den alten Wert aber der neue Wert wird von GPIO22 gelesen Der neue Wert wird nicht von GPIO23 gelesen bis die while Schleife das n chste Mal durchlaufen wird Open Kollektor Treiber Das Gertboard benutzt sechs Ports eines ULN2803A um Open Kollektor Treiber bereitzustellen Diese werden benutzt um Ger te ein und auszuschalten besonders solche die von einer externen Stromver sorgung gespeist werden und eine andere Spannung ben tigen oder einen h heren Strombedarf haben als auf dem Gertboard verf gbar ist Einfa
77. s pas siert e while button press lt 20 ndern Sie die 20 in eine andere Zahl Anm d Erl uterung der Programmzeile solange die Variable button press kleiner ist als 20 wird die whi 1e Schleife durchlaufen button_press wird bei jedem Schaltvorgang um 1 erh ht button press 1 ndern Sie die 1 in eine andere Zahl Anm d Erl uterung der Programmzeile die Variable button press wird um 1 erh ht Es handelt sich um die Kurzschreibweise von button press button press 1 Testen der LEDs Das C Testprogramm f r die LEDs hei t Teds Die Python Versionen sind leds rg py und leds wp py Um das Gertboard f r diesen Test vorzubereiten schauen Sie sich den Verdrahtungsplan im Bild 13 an Jeder 1 ist als Ausgang geschaltet somit sind alle out Jumper die oberhalb der Puffer Chips installiert Dr hte werden f r die folgenden Verbindungen benutzt wobei alle GP Pins auf Stecker J2 und alle B Pins auf Stecker J3 liegen GP25 zu B1 GP24 zu B2 GP23 zu B3 GP22 zu B4 GP21 zu B5 GP18 zu B GP17 zu B7 GP11 zu BS GP10 zu B9 GP9 zu B10 GPS zu B11 und GP7 zu B12 Mit anderen Worten die 12 linken GP Pins werden verbunden mit den B Pins au er dass GP14 und GP15 vermisst werden sie sind bereits auf den UART Modus durch Linux gesetzt so dass sie am besten nicht beachtet werden Wenn es nicht genug Jumper oder Verbindungsdr hte gibt um alle ben tigten Verbindungen f r den
78. schen diesen Steckern auf einem voll best ckten Bord zu erkennen Es ist viel klarer auf dem Schema mit der blauen und grauen Beschriftung im Bild 5 zu erkennen Auf dem Gertboard ist von jedem Stecker mit mehr als zwei Pins das Pin 1 mit einem Quadrat um das Pin und einem Punkt daneben markiert Die Punkte sind sehr hilfreich bei einem best ckten Bord aber sie erscheinen nicht im Bild 5 so dass Sie hier die Quadrate nutzen k nnen um Pin 1 zu finden Nicht jeder beschriftete Jn hat mehrere Pins J1 am unteren Rand des Bords gelegen ist der Stecker der das Gertboard mit dem Raspberry Pi verbindet J19 am oberen Rand des Bords rechts der Mitte ist ein Block von Schraubanschl ssen die Ihnen den Anschluss einer Stromversorgung und eines Motors er leichtern Stromversorgung auf dem Gertboard Die Pins f r die Stromversorgung sind mit dem Spannungswert beschriftet z B 5V oder 3V3 das be deutet 3 3V Eine 5V Versorgung kommt vom Raspberry Pi auf das Bord Wenn Sie diese Spannung ben tigen kann sie vom unteren Pin beschriftet mit 5V am Stecker J24 auf der rechten unteren Ecke des Bords abgegriffen werden Masse ist beschriftet mit GND oder dem Symbol Die Versorgungsspannung die Spannung die als logisch 1 Ein oder high fungiert betr gt 3 3V Diese wird aus dem 5V Pin im Stecker J1 durch die Komponenten in der rechten unteren Ecke des Bords er zeugt Um die 3 3V Versorgung an die Komponenten auf dem Gertboard zu liefern m sse
79. schlie end OUT_GPIO n f r jedes der 12 Pins aufgerufen werden um sie als Ausgang zu betreiben Die LEDs werden durch das Makro GPIO_SETO umgeschaltet Der Wert der an GPIO_SETO zugewie sen wird setzt das GPIO Pin n auf high 1 wenn das Bit n auf diesen Wert gesetzt wird Wenn ein GPIO Pin auf high 1 gesetzt wird wird der damit verbundene I O Port ebenfalls auf high 1 gesetzt und die LED an diesem Port geht an Somit setzt die folgende Programmzeile GPIO_SETO Ox180 die GPIO Pins 7 und 8 auf high da die Bits 7 und 8 auf 1 gesetzt werden hexadezimal 0X 180 0001 1000 0000 in bin rer Schreibweise Entsprechend dem Verdrahtungsplan oben gehen die Ports 11 und 12 auf high 1 das sind die mit GP7 und GP8 verbundenen Ports und somit leuchten die zwei rechten LEDs Um die LEDs auszuschalten wird das Makro GPIO_CLRO benutzt Das arbeitet in analoger Weise wie SET0 aber hier zeigen die auf 1 gesetzten Bits im zugewiesenen Wert an welche GPIO Pins auf low 0 gesetzt werden und damit welche Ports auf 0 gesetzt werden und damit welche LEDs ausge schaltet werden Zum Beispiel setzt die Programmzeile GPIO_CLRO 0x100 hexadezimal 0x100 0001 0000 0000 bin r 2 Bit 8 ist gesetzt das GPIO Pin 8 auf low und schaltet somit die LED f r Port 11 aus weil dieser Port mit GPS verbunden ist In leds c werden immer alle LEDs zusammen ein oder ausgeschaltet aber das kann man nat r lich anders machen
80. se zwischen den einzelnen Funk tionsbl cken auf dem Gertboard Die vielen Kontaktpfosten Pins auf dem Bord erlauben die Herstel lung dieser Verbindungen ber Verbindungsdr hte oder Kontaktbr cken Jumper Siehe Bild 11 auf Seite 18 f r ein Beispiel wie die Bl cke miteinander verbunden werden k nnen lt Bild 3 Verbindungsdr hte und br cken Jumper Verbindungsdr hte verbinden zwei Teile des Gertboards miteinan der w hrend Br cken zwei nebeneinander liegende Pins verbinden Beschriftung und Diagramme Wie Sie sehen k nnen werden Sie beim Herstellen der Verbindungen zwischen den Funktionsbl cken intensiv durch die wei e Beschriftung auf dem Bord unterst tzt Hier m chten wir das Schema das in Bild 5 gezeigt wird erl utern An Hand dieses Schemas zeigen wir Ihnen die Verdrahtung Ihres Gertbo ards f r die U4 Li j Zeen W n pr af I 0 amp 2 r 399529 120 15 C16 Raspberry Pi Gertboard 0ct 2012 L M K ON 3V3 rtbo x m x x CES f a AAAAAKAKAAA Bild 4 Foto des Gertboards 6528628863 EE de MOTA NOTB MOTA WI SA Bal ale Bal Bal le ale Bal S elef LS 12 ak ANE Ba LLL bl l
81. se zwei Kan le sind ADO f r Kanal und AD1 f r Kanal 1 auf dem Ste cker J28 Gleich neben diesen Pins sind die Masse Pins GND die die Referenz liefern Testen der D A und A D Konverter Entsprechend der Datenbl tter f r die D A Wandler wird der Wert am Ausgangspin V ouw mit folgender Formel berechnet f r den 8 bit MCP4802 Vout Din out 555 Vout f r Kanal 0 ist DAO auf J29 f r Kanal 1 ist es DAI simim gerry r hp i ZS deele Ko i r n mat SE C15 E N n D ER Mk S EH e SEH 22 z e m D p 8 un n DS ot ve Pi Gertboord EEE Er Er Gi 21 021 202 SSE S KE 55555 55 555 u ma mizi bv Bild 22 Verdrahtungsschema f r den D A Test Um den D A Wandler zu testen wird ein Multimeter ben tigt Das C Testprogramm ist dt oa Die Python Version ist dtoa py Um das Gertboard f r den Test zu konfigurieren werden Jumper auf den Pins GP11 GP10 GP9 und GP7 platziert die sie mit den Pins vom SPI Bus dar ber verbinden Verbin den Sie das Multimeter wie folgt das schwarze Kabel muss mit Masse verbunden werden Sie k nnen dazu jedes Pin benutzen das mit L oder GND bezeichnet ist Das rote Kabel muss mit DAO verbunden werden um den D A Kanal 0 zu testen wie unten gezeigt oder mit DAT f r Kanal 1 Schalten Sie das Multimeter ein und w hlen Sie den Spannungsbereich von O bis rund 5V
82. ss der Motor in Mittelstellung des Potis still steht und in beiden Endlagen mit maximaler Drehzahl l uft jeweils in entgegengesetzter Rich tung Um das Gertboard f r dieses Beispiel vorzubereiten werden die Verdrahtungsschemas f r den A D Wandler und den Motortest kombiniert Jumper verbinden GP8 bis GP11 mit den Pins direkt oberhalb um mit GP8 bis GP11 den SPI Bus zu steuern Sie m ssen das Poti an den ADO Eingang anschlie en GPIO17 steuert den Motor B Eingang und GPIO18 den Motor A Eingang ber den Pulsweitenmodulator PWM Darum muss GP17 ber einen Draht mit MOTB und GP18 mit MOTA verbunden werden Der Motor und seine Stromversorgung m ssen an die Schraubklemmen auf 119 oben auf dem Bord ange schlossen werden siehe Verdrahtungsschema unten Ihre Strom versorgung ist hier c 8 ze et RER ak BS L 201 8 12 x VTTUTTTU TT 9 il 1 S ei Em ak ng m b A ost 3 A x 33 m 1 sl 22 va FT FU T wo 11 7 il i 1 e Lech 1 x ve a Ka m wur UE Ate nd ER EE nn 268551 nc 556595 L e von e E ad SES e ger sv L gt 1 L8 RPRR PO Poti WS Posi c J P04 Si ale Poti lki Pesi x pc ZE PCH zo Fe 8559 1 7 c 2 kif Bi Z e E Ju jo 2 L TE ev Lee
83. suchen Sie die folgenden Zeilen im Programm auf initialize the pushbutton pin as an input Druckschalter Pins als Eingang setzen pinMode buttonPin INPUT und f gen Sie die folgenden zwei Zeilen danach ein set pullup on pushbutton pin setze einen pull up Widerstand an das Schalter Pin digitalWrite buttonPin HIGH Um den gelesenen Wert vom Schalter zu invertieren gehen Sie zu der Zeile buttonSate digitalRead buttonPin und f gen Sie ein Ausrufezeichen der Negations Operator in C wie folgt ein buttonSate digitalRead buttonPin Laden Sie nun das ge nderte Programm hoch wie beim Programm Blink beschrieben Wir m ssen noch das Arduino digitale Pin 2 PD2 auf dem Gertboard wie Sie aus der Tabelle entnehmen k nnen mit einem Schalter verbinden nehmen wir Schalter 3 Das Raspi Pin in der Schaltung oben an dem wir den Wert einlesen ist auf dem Stecker J3 45 26 CR i Raspberry P gertboord 21 Det 2012 Bild 31 Verdrahtungsschema f r das Programm Button Wenn Sie das erledigt haben leuchtet die erste LED wenn der dritte Schalter gedr ckt wird und ist aus wenn der Schalter nicht gedr ckt ist Programm AnalogInput Versuchen wir nun ein analoges Pin zu benutzen ffnen Sie das Programm AnalogInput unter File gt Examples gt Analog Dieses Programm liest einen Wert vom analogen Eingang 0 der bereits vom in ternen A D Wandler in einen Wert zwischen 0 und 1023
84. te 21 um GPIO4 zehn Mal high und low zu setzen Beachten Sie Das Testprogramm fragt zwar welcher Treiber getestet werden soll aber es benutzt diese Information nur um die dazu ben tigten Verbindungen anzuzeigen Ansonsten wird die Eingabe ignoriert Test des Open Kollektor in Python Die beiden Open Kollektor Programme ocol wp py und ocol rp py sind identisch au er dem benutzten GPIO System Im Programm organisiert die Funktion which_channel die Kanalaus wahl des Benutzers Wenn eine g ltige Eingabe erkannt wird werden die notwendigen Verbindungen angezeigt Wenn die Enter Taste zur Best tigung der richtigen Verbindungen gedr ckt wurde schaltet das Programm den gew hlten Open Kollektor Port zehn Mal ein und aus mit einer Pause von 0 4 Se kunden zwischen jedem Schaltvorgang Am Ende oder wenn Ctrl C gedr ckt wurde werden die GPIO Ports zur ckgesetzt 26 Vorschl ge zum Experimentieren ndern Sie die folgenden Werte und sehen Sie was passiert sleep 0 4 ndern Sie die 0 4 i in range 10 ndern Sie die 10 sehen Sie was passiert wenn Sie dem Programm mitteilen Treiber 7 zu benutzen nachdem das Programm gestartet wurde ndern Sie die Fehlermeldung die bei der Auswahl einer falschen Portnummer angezeigt wird in eine Meldung Ihrer Wahl Motor Controller Das Gertboard hat einen ROHM BD6222HFP Motor Controller Der Motor Controller ist f r B rsten Gleichstrom DC Motoren un
85. teuerung 28 Pin dual in line ATmega Microcontroller 2 Kanal 8 10 oder 12 Bit digital zu analog Konverter 2 Kanal 10 Bit analog zu digital Konverter Die Anordnung dieser Bl cke ist in Bild 2 zu sehen 3 50 J ta i UM JM c g out 8 Ze At at ai sz CAR ER 0000008 YYIXIIYIIY Ve 5 sur RW WW WK RK s x W s 35 ak gua 212 spberry Pi rtboard ken SE m m LLIKA D CH yi gt elementi a we ke 4 ertt Gepufferter O Schalter und LEDs Atmel ATmega Chip mem C _ Open Kollektor Treiber L 1 GPIO Pins C Motor Controller AD und D A Konverter Bild 2 Anordnung der Funktionsbl cke die Schl sselbl cke sind farblich umrandet Bitte beachten Sie dass die Er scheinungsform mancher Komponenten abweichen kann Dieses kommentierte Foto eines voll best ckten Gertboards zeigt wo die Funktionsbl cke liegen Einige Funktionsbl cke haben zwei markierte Bereiche Zum Beispiel zeigen die t rkisen Linien den Atmel ATmega Chip nicht nur um den Chip selbst und die Pins daneben links unten sondern auch zwei Pins in der Mitte nahe dem unteren Rand des Bords Diese beiden Pins sind mit dem Atmel Chip verbunden und liefern einen einfachen Weg die GPIO Signale vom Raspberry Pi die sich in der black box befin den mit dem Atmel Chip zu verbinden Es gibt keine anderen Verbindungen au er Betriebsspannung und Mas
86. trollers verbunden wird MOTA wird in unserem Motortest benutzt und der andere Eingang des Motor Controllers MOTB in unserem Test wird auf statisch high oder low gesetzt dann k nnen die Geschwindigkeit und die Drehrichtung des Motors gesteuert werden 1 1 MOTA 0 0 Bild 19 Die Drehrichtung des Motors wird durch gesetzt W hrend MOTA eine Taktrate von 25 hat be kommt der Motor immer dann Strom wenn MOTA und MOTB unterschiedlich sind also f r 75 der Zeit Ein Beispiel Bild 19 Wir wechseln zwischen A low B high und A high B high Wenn A low ist bekommt der Motor Strom und dreht in einer Richtung wenn A high ist bekommt er keinen Strom Das Resultat der Taktrate von 25 die hier gezeigt wird ist dass der Motor mit ungef hr Geschwindigkeit dreht MOTA MOTB 0 0 Bild 20 In diesem Beispiel dreht der Motor in entgegengesetzter Richtung mit ca 25 Drehzahl Wenn Sie andererseits MOTB auf low setzen wie in Bild 20 dann bekommt der Motor Strom wenn MOTA high ist aber er dreht in die andere Richtung Ist MOTA low dann bekommt der Motor keinen Strom Das Resultat der 25 Taktrate ist dass der Motor mit ca 1 4 Geschwindigkeit in die andere Rich tung als im Bild 19 dreht Test des Motor Controllers Das C Testprogramm f r den Motor Controller hei t motor In Python gibt es zwei Versionen motor rg py undmotor wp py Um das Gertboard f r den Test vorzubereiten wird GP17 auf J2 mit dem MOTB
87. uerformat Die Seitennummern A 1 A 2 usw sind in der linken unteren Ecke der Seiten wenn die Seite mit der Schrift aufrecht gehalten wird Testprogramme berblick Es gibt Testprogramme f r das Gertboard geschrieben in C und in Python C erlaubt den direktesten Zugriff auf die Funktionen des Gertboards aber es ist f r den Anf nger keine so leichte Programmier sprache Verschiedene Programmpakete wurden erstellt um in Python geschriebenen Programmen den Zugriff auf die GPIO Pins des Raspberry Pi und die alternativen Funktion dieser Pins wie den seriellen peripheren Interface SPD Bus und die Pulsweitenmodulation PWM zu erm glichen Indem Sie diese Programmpakete einsetzen k nnen Sie die meisten Funktionen des Gertboards mit Python benutzen Im Moment der Erstellung dieses Handbuches ist die einzige nicht mit Python programmierbare Hauptfunk tion der Atmel Microcontroller C Code berblick Um die Gertboard C Software herunterzuladen gehen Sie zu http www gertbot com other_products html oder http vvv element14 com und suchen Sie nach Gertboard indem Sie das Eingabefeld oben auf der Webseite benutzen Der Link den Sie anklicken sollten sollte so hnlich lauten wie Application Library for Gertboard Von dort k nnen Sie die Datei herunterladen die den C Code enth lt Sie hat einen Namen wie etwa gertboard_sw_20120725 zip Wie Sie erkennen handelt es sich um eine zip Datei die Sie an schlie end auspacke
88. up erreicht Sollte es jemals erforderlich sein der Wert f r pull down ziehen auf OV ist 1 Der Wert f r nicht ziehen no pull ist 0 Das erlaubt dem Pin als Ausgang zu fungieren nachdem es als Schalter Eingang benutzt wurde Um diese Werte den entsprechenden Pins zuzuweisen setzen Sie GPIO_PULLCCLKO 0X03800000 Diese 32 Bit hexadezimale Zahl 0X am Anfang bedeutet hexadezimal bin r lautet sie 0000 0011 1000 0000 0000 0000 0000 0000 hat die Bits 23 24 und 25 ganz rechts ist Bit 0 auf 1 gesetzt der Rest ist 0 Das bedeutet der pull Wert wird auf die GPIO Pins 23 24 und 25 angewendet Ein short_wait gibt dem Befehl Zeit umgesetzt zu werden und anschlie end werden GPIO_PULL und GPIO_PULLCLKO zur ck auf gesetzt Zur ck im Hauptprogramm main Routine wird eine Schleife ausgef hrt in der die Schalter zyklisch abgefragt werden unter Benutzung des Makros GPIO_INO Die Bits 23 24 und 25 werden ausgewertet ber logische Verkn pfung mit einer Maske und unter Benutzung von Schiebeoperatoren und bei einer Ver nderung eines Schalterzustandes wird dies auf dem Bildschirm angezeigt 1 f r oben high und 0 f r unten low Diese Schleife wird solange durchlaufen bis gen gend Statuswechsel erkannt wor den sind Nach der Schleife wird unpull_pins aufgerufen das den pull up an den Pins zur cksetzt danach die Funktion restore_ioingb_common c um aufzur umen Schaltertest in Pytho
89. vorw rts und r ckw rts durchlaufen m ssen machen wir eine Kopie und invertieren diese sie hei t ports_rev Nun setzen wir die Ports als Ausgang indem wir die Liste port s durchlaufen Danach definieren wir die Hauptroutine des Scripts die Funktion led_drive die drei Argumente erfordert reps multiple direction 1 reps von repeats Wiederholungen definiert wie oft der Prozess durchlaufen wird 1 oder 3 in dieser Demo 2 multiple mehrfach definiert ob eine LED ausgeschaltet wird bevor die n chste LED eingeschaltet wird 1 anlassen d h es leuchten mehrere LEDs 3 direction Richtung definiert die Richtung vorw rts oder r ckw rts es wird die entsprechende Liste zum Durchlaufen der LEDs verwendet ports f r vorw rts ports_rev f r r ckw rts Es gibt acht Aufrufe der Funktion Led drive und somit haben wir eine Menge Programmzeilen gespart weil wir mit der Funktion immer wieder denselben Code mehrfach aufrufen Alle Aufrufe von led_drive sindineinentry except Block eingeschlossen Das sichert dass beim Ver lassen des Programms ber Ctrl C die GPIO Ports zur ckgesetzt werden Das verhindert Warnungen wenn das n chste Mal ein Programm die Ports ffnen will diese aber immer noch in Benutzung durch ein anderes Programm sind Vorschl ge zum Experimentieren ndern Sie die Werte und sehen Sie was passiert led drive 3 0 ports ndern Sie die 3 e led drive 3 0 ports w

Download Pdf Manuals

image

Related Search

Related Contents

Lancer Ecolution-X  Wood Desk Chair  Evo Totem User Manual  Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 Page  LRP 1503 VRA  - Wincor Nixdorf  Manuel d`utilisation Dialog  a WARNING: a ATTENTION !  Discours - Associations.gouv.fr  Manuale dell`utente  

Copyright © All rights reserved.
Failed to retrieve file