Projekt 60: Messplatine fuer Arduino: Unterschied zwischen den Versionen
(11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 11: | Zeile 11: | ||
'''Autor:''' [[Benutzer: Sergej_Krause| Sergej Krause]]<br/> | '''Autor:''' [[Benutzer: Sergej_Krause| Sergej Krause]]<br/> | ||
'''Autor:''' [[Benutzer: Steffen_SchulzeMiddendorf| Steffen Schulze Middendorf]]<br/> | '''Autor:''' [[Benutzer: Steffen_SchulzeMiddendorf| Steffen Schulze Middendorf]]<br/> | ||
mit freundlicher Unterstützung von | |||
[[Benutzer: Assad_Al-Suleihi | Assad Al-Suleihi]] & [[Benutzer: Ansgar_Rahmesohl | Ansgar Rahmesohl]] | |||
= Motivation, Aufgabenstellung & Vorgaben = | = Motivation, Aufgabenstellung & Vorgaben = | ||
Zeile 21: | Zeile 24: | ||
<br/> | <br/> | ||
<br/> | <br/> | ||
= Projektzeitplan = | |||
{| class="mw-datatable" | |||
! style="font-weight: bold;" | Vorgang | |||
! style="font-weight: bold;" | Abgeschlossen bis | |||
|- | |||
| Semsterstart | |||
| KW38 / 2016 | |||
|- | |||
| Themenauswahl | |||
| KW40 / 2016 | |||
|- | |||
| Informationen sammeln - Einarbeitung | |||
| KW41 / 2016 | |||
|- | |||
| Schaltplan in MULTISIM2014 erstellen | |||
| KW41 / 2016 | |||
|- | |||
| BOM erstellen und bestellen | |||
| KW45 / 2016 | |||
|- | |||
| Platinenlayout in ULTIBOARD2014 erstellen | |||
| KW45 / 2016 | |||
|- | |||
| Platine auf Fräsbohrplotter erstellen | |||
| KW47 / 2016 | |||
|- | |||
| Bestücken und Löten der Platine | |||
| KW48 / 2016 | |||
|- | |||
| Fehlerbehebung und Programmierung | |||
| KW51 / 2016 | |||
|- | |||
| Projektmesse mit Präsentation | |||
| KW02 / 2017 | |||
|- | |||
| Wiki-Artikel finalsieren - Dokumentation | |||
| KW04 / 2017 | |||
|- | |||
| Semesterende | |||
| KW09 / 2017 | |||
|} | |||
= Multisim Schaltung = | = Multisim Schaltung = | ||
Zeile 144: | Zeile 189: | ||
= Programmierung & Funktionscheck = | = Programmierung & Funktionscheck = | ||
[[Datei: Projekt_ArduinoMessplatine_Ausgabe_der_Sensorwerte_im_SerialMonitor.jpg|mini|Messwerte]] | [[Datei: Projekt_ArduinoMessplatine_Ausgabe_der_Sensorwerte_im_SerialMonitor.jpg|mini|Messwerte]] | ||
[[Datei: Arduino Messplatine PAP.png|mini|300px|left|PAP Arduino Messplatine]] | |||
Zur Funktionsprüfung haben wir ein Testprogramm in der Arduino.cc Version 1.6.12 geschrieben. | Zur Funktionsprüfung haben wir ein Testprogramm in der Arduino.cc Version 1.6.12 geschrieben. | ||
Zeile 154: | Zeile 200: | ||
Digital: | Digital: | ||
* | * D3 HAL Sensor | ||
* | * D5 MosFet Steuersignal | ||
Das Program testet alle verfügbaren Sensoren, in dem es die Daten der einzelnen Sensoren ausliest und die zurückgelieferten Werte auf dem Seriellenmonitor der Arduinoprogrammierumgebung ausgibt. | Das Program testet alle verfügbaren Sensoren, in dem es die Daten der einzelnen Sensoren ausliest und die zurückgelieferten Werte auf dem Seriellenmonitor der Arduinoprogrammierumgebung ausgibt. | ||
Zeile 161: | Zeile 207: | ||
Um dem Program eine etwas Anspruchsvollere Aufgabe zu geben, kann der Motor mittels Potentionmeter und Drucksensor gestartet und gestoppt werden. Die Ansteuerung des Motors erfolgt über ein PWM Signal auf den MosFet. Um beide Sensoren einen gleichwertigen Einfluss auf die Steuerung des Motors zu gewährleisten, werden beide Rohwerte auf 1/64 geteilt und miteinander multipliziert, sodass sich ein Wert zwischen 0 und 255 einstellt. Wird er Potentiometer Wert erhöht, so ist es leichter mit dem Drucksensor den Motor zu starten. Je niedirger der Potentionmeter Wert, desto mehr Druck muss auf den Drucksensor gegeben werden, damit sich der Motor startet. Hier unser Code: | Um dem Program eine etwas Anspruchsvollere Aufgabe zu geben, kann der Motor mittels Potentionmeter und Drucksensor gestartet und gestoppt werden. Die Ansteuerung des Motors erfolgt über ein PWM Signal auf den MosFet. Um beide Sensoren einen gleichwertigen Einfluss auf die Steuerung des Motors zu gewährleisten, werden beide Rohwerte auf 1/64 geteilt und miteinander multipliziert, sodass sich ein Wert zwischen 0 und 255 einstellt. Wird er Potentiometer Wert erhöht, so ist es leichter mit dem Drucksensor den Motor zu starten. Je niedirger der Potentionmeter Wert, desto mehr Druck muss auf den Drucksensor gegeben werden, damit sich der Motor startet. Hier unser Code: | ||
Aktuelle Version vom 4. Februar 2017, 09:19 Uhr
Einleitung
Projekt aus Angewandte Elektrotechnik Praktikumim Ingenieurswissenschaftliche Vertiefung II.
Projektmitglieder:
Betreuer: Prof. Dr. Mirek Göbel
Betreuer: Prof. Dr. Ulrich Schneider
Autor: Sergej Krause
Autor: Steffen Schulze Middendorf
mit freundlicher Unterstützung von Assad Al-Suleihi & Ansgar Rahmesohl
Motivation, Aufgabenstellung & Vorgaben
Ziel des Praktikums ist es anhand eines aus einer Liste gewählten Mini-Projektes Erfahrungen im Bereich Elektrotechnik zu vertiefen. Der fachliche Fokus unterscheidet sich von Projekt zu Projekt. Im ausgewählten Projekt 60: "Messplatine für Arduino" ging es darum anhand eines vorgegeben Schaltplans eine Messplatine zu entwerfen, erstellen und zu testen. Achtung der vorgegebene Schaltplan hat bei I²C Schnittstelle einen Fehler, 5V und GND liegen auf der gleichen Line. Dies wurde in unserer Multisim Schaltung bereits berichtigt. Wir haben uns als eigenes Ziel gesetzt die Platine als Shield für den Arduino auszuführen. Dies erlaubt die einfache Steckmontage auf dem Mikrocontroller.
Die Datenblätter der zu nutzenden Bauteile finden sich in den Downloads. Nachdem die Fertigung der Platine abgeschlossen ist, soll ein Video erstellt werden, welches die Funktion und Möglichkeiten veranschaulicht.
Projektzeitplan
Vorgang | Abgeschlossen bis |
---|---|
Semsterstart | KW38 / 2016 |
Themenauswahl | KW40 / 2016 |
Informationen sammeln - Einarbeitung | KW41 / 2016 |
Schaltplan in MULTISIM2014 erstellen | KW41 / 2016 |
BOM erstellen und bestellen | KW45 / 2016 |
Platinenlayout in ULTIBOARD2014 erstellen | KW45 / 2016 |
Platine auf Fräsbohrplotter erstellen | KW47 / 2016 |
Bestücken und Löten der Platine | KW48 / 2016 |
Fehlerbehebung und Programmierung | KW51 / 2016 |
Projektmesse mit Präsentation | KW02 / 2017 |
Wiki-Artikel finalsieren - Dokumentation | KW04 / 2017 |
Semesterende | KW09 / 2017 |
Multisim Schaltung
Zunächst haben wir die Schaltung entsprechend der Vorgabe in MULTISIM2014 umgesetzt. Zur besseren Übersicht und zur sicheren Verbindung der richtigen Pins am Arduino haben wir ein Template des vorhanden Pinouts des Arduino Mega2560 eingesetzt. Das Template lässt sich entweder auf der Homepage von National Instruments downloaden oder aus den Downloads im Wiki beziehen. Zusätzlich haben wir mit möglichst vielen Verknüpfungen(in MULTISIM heißen diese: allgemeine Steckverbinder) gearbeitet um die Übersicht gegenüber einem komplett verdrahteten Schaltplan zu erhöhen. Der Stromlauf lässt sich so für die einzelnen Stromkreise leicht nachvollziehen. Genutze Steckverbinder werden dabei mit ausgefüllten Rautensymbolen dargestellt. Noch nicht genutze Verbinder sind nicht gefüllt. Grundsätzlich erfüllt die Schaltung mehrere Funktionen:
- Ansteuerung RS485 Schnittstelle
Standartmäßig verfügt der Arduino MEGA2560 über eine native RS232 Schnittstelle. Diese setzen wir über den oben gannten IC in eine RS485 Schnittstelle um. Damit lassen sich leicht entsprechende Sensoren anschließen. Somit lässt sich beispielsweise Kontakt zu einer SPS aufnehmen.
- I²C Schnittselle
Sensoren lassen sich häufig über eine I²C Schnittstelle ansprechen. Die einfach Verkabelung über 2 Drähte macht diese Verbindungstechnik intressant.
- Hall-Sensor
Hall-Sensoren reagieren auf Änderung des umgebenden magnetischen Feldes. Verwendet wird dies z.B. im Projekt: 49 schwebende Kugel.
- Motorsteuerung
Mikrocontroller haben an Ihren Ausgangspins nur eine geringe Ausgangsleistung, für den Arduino empfiehlt sich eine Ausgangsleistung von 20mA pro Pin nicht zu überschreiten. Soll jetzt ein Aktuator mit größerer Leistung angesprochen werden(z.B. der verw. Motor mit etwa 80mA) muss auf eine externe Spannungsversorgung zurückgegriffen werden. Die Steuerung wird über ein MosFet realsiert. Die Funktion gleicht der eines Transistors. Eine große Last kann mit der Ausgangsspannung des Arduino gesteuert werden.
- Drucksensor
Luftdrucksensoren haben vielfältige Einsatzmöglichkeiten. An der Messplatine könne bis zu 5 gleichzeitig angeschlossen und ausgelesen werden.
Bauteile & BOM
Nach Erarbeitung der Schaltung konnte die Bestellliste gefüllt werden. Die sogenannte "BOM" - Bill of Materials enthält alle benötigten Bauteile um das Projekt erfolgreich fertig zu stellen. Es war ein maximum von 20€/Projekt vorgegeben. Einige teurere Sensoren konnten aus dem Bestand der Hochschule zur Verfügung gestellt werden. Es bietet sich immer an kritische Materialen in mehrfacher Ausführung zu bestellen, damit bei evtl. Lötfehlern nicht erst auf neues Material gewartet werden muss.
Nummer | Bauteilgruppe | Bezeichnung | Anzahl |
---|---|---|---|
1 | IC | MAX 485 CPA, RS485/422 Transceivcer, DIP-8 | 1 |
2 | MOSFET | IRLIZ 44N | 1 |
3 | Drehpotentiometer | PC20BU-10K-LIN OMEG - Bestand HSHL | 1 |
4 | Gleichrichterdiode | BY 329/1000, DO220, 1000V, 8A | 1 |
5 | Hall-Sensor | TLE 4905 L 3.5 - 24 V PSSO 3-2 - Bestand HSHL | 1 |
6 | Wiederstände | 120 Ohm, 1,0 K-Ohm, 10 K-Ohm, 2,4 Ohm, 1,0 Ohm | 1, 1, 1, 1, 1 |
7 | Kondensatoren | 470pF, 4,7nF | 5, 2 |
8 | Lüfter | 40x40x10mm, 12V, 0,08A | 5,2 |
9 | Drucksensor | Bestand HSHL | 5 |
10 | Platine | Fräsbohrplotter zsm. mit Herrn Rahmesohl, Material wurde gestellt. | |
11 | Stromsensor | LEM LTS-6-NP - Bestand HSHL | 1 |
12 | Kabel, Jumper Wire | Male-Male, Female-Female | 10, 10 |
13 | Header & Pins | 1", 1/2" | 20, 20 |
Die Bom findet sich auch in Excel-Form im SVN-Ordner.
Ultiboard Aufbau
Nachdem die Schaltung in MULTISIM2014 erstellt wurde, kann diese über den Reiter "Übertragen" --> "in Ultiboard 2014 übertragen" in ULTIBOARD2014 exportiert werden. Auch hier haben wir das entsprechende Shield Layout verwendet. Anfangs stellt ULTIBOARD2014 die verwendeten Bauteile neben der Platine dar. Verbindungen sind mit dünnen gelben Leitungen dargestellt. Somit kann keine Leitung vergessen werden. Die Bauteile können jetzt beliebig verteilt werden. Es macht Sinn sich an dieser Stelle über ein sinnvolles Layout gedanken zu machen. Sind alle Bauteile an gewünschten Ort, kann über einen Klick auf "automatische Leiterbahnführung" die Verbindung zwischen den Bauteilen automatisch erstellt werden. Auf folgende Layoutregeln ist besonders zu achten:
- Lötfreiraum:
Bendekt das Ihr wenn Ihr die Platine bestückt genug Platz für den Lötkolben habt. Hier spielt zwar auch die Lötreihenfolge eine Rolle, beim Layouten sollte dieser PLatz auf jeden Fall dennoch berücksichtigt werden.
- Bauteile und Lötverbindung nicht auf gleicher Seite:
Die Platine kann von beiden Seiten, genannt "Copper TOP & BOTTOM" bestückt werden. Achtet darauf das Ihr die Lötverbindung jeweils für die Seite plant, an der nicht schon das Bauteil ist. Dies vereinfacht das spätere Löten enorm da Ihr nicht versuchen müsst das Lot in enge Zwischenräume zu bringen.
- Leiterbahnbreite und Lötaugengröße:
Je mehr Strom durch eine Leiterbahn fließen soll, je größer(breiter) sollte diese ausgelegt sein. Das Internet bietet hier gute Anhaltspunkte. Generell gilt, je breiter die Bahn, je größer die Lötaugen und je größer der Leiterbahnfreiraum, je einfacher wird das Löten, da Ihr nicht so schnell Kontaktierungen erstellt, wo keine entstehen sollte. ULTIBAORD2014 verfügt über Leiterbahn regeln die ensprechend gesetzt werden können. Wir haben beispielsweise die Leitung der externen Spannungsversorgung vergrößert um keine Überhitzung der Leiterbahn zu erzeugen. Am besten besprecht Ihr euer Layout vor dem Fräsen mit eurem Betreuer. Die Fertigung der Platinen dauert lange und ist entsprechend teuer, daher gilt hier lieber mehrfach Fragen als später Probleme festzustellen.
- Footprints:
Footprints sind wie der Name sagt, die "Fußabdrücke" der verwendeten Bauteile. Werden Statdartbauelemente verwendet, sind diese in ULTIBOARD2014 auswählbar. Spezielle Bauteile wie der Stromsensor(LEM) müssen selbst angelegt werden. Der Footprint beeinhaltet sowohl das Lochbild als auch auch den Bauteilabdruck. Am besten verwendet Ihr hier das Datenblatt des Bauteils und messt die Bauteile zur Sicherheit nochmal selbst nach. Ist euer Layout entgültig fertig kann es über ULTIBAORD2014 per "Datei" --> "Exportieren" in sogenannte Gerber-Dateien umgewandelt werden, mit denen sich der Fräsbohrplotter der HSHL ansteuern lässt. ACHTUNG: Dies funktionert in der Studenten Version im Evaluationsmodus nicht! Es muss auf einen HSHL-PC zurückgegriffen werden. In den Mechatronik-Räumen sind solche Lizenzen vorhanden.
Platinenfertigung
Bevor Ihr die Platine fräsen lasst, macht auf jeden Fall einen Papier Ausdruck und versucht eure Bauteile auf die PLatine aufzustecken. Fehler werden hier schnell deutlich. Die Fertigung der Platine erfolgte mit dem HSHL eigenen Fräsbohrplotter LPKF ProtoMat S100. Der Plotter erstellt aus den Gerber-Daten aus ULTIBOARD2014 eine zweiseitige gefräste Platine. Grundsätzlich wird zwischen SMD- und THT- Bauteilen unterschieden. Bei händischer Bestückung bietet sich die THT, d.h. Through Hole Technology an. Hier werden die "Beine" der Bauteile durch Löcher in der Platine und anschließendes Verlöten verbunden. Man muss wissen, dass der Fräsbohrplotter nicht in der Lage ist eine "Durchkontaktierung" zu erstellen. Das heißt, Bauteile sollte Ihre Verbidung an beiden Seiten benötigt werden, müssen auch an beiden Seiten der Platine eine Verlötung stattfinden. Da die Bedienung des Fräsbohrplotters Teil des ersten Praktikumversuchs ist, soll an dieser Stelle nicht mehr näher darauf eingegangen werden. Anschließend kann die Platine mit den oben genannten Bauteilen vestückt werden. Achtet auf einen Lötkolben mit kleiner Spitze. Eine Temperatur von 350°C hat sich als ideal herausgestellt. Prüft nach jeder neuen Lötung mittels Multimeter-Durchgangsprüfer ob die Benetzung mit Lot funktioniert hat und Ihr keine Kurzschlüsse mit anderen Leiterbahnen erzeugt habt. Das erleichtet euch im Anschluss das testen ungemein. Lötablauf sollte wie folgt sein:
- Lötspitze an Bauteil und Lötauge halten und damit aufwärmen
- Lot gegen den Kolben zuführen bis Verbindung hergestellt
- Kolben nach oben entlang des Bauteiles wegziehen
- Verbindung auf Konataktierung mit Multimeter prüfen --> Lack an der Oberfläche der Platine muss durchstoßen werden.
Programmierung & Funktionscheck
Zur Funktionsprüfung haben wir ein Testprogramm in der Arduino.cc Version 1.6.12 geschrieben.
Um die Funktionalität der Senoren zu prüfen müssen die richtigen Pins an dem Arduino über das Program angesprochen werden. Hierbei ist darauf zu achten welche Pins benutzt werden, insbesondere ob Digitale-oder Analoge Pins verwendet werden, da diese unterschiedlich angesprochen werden. Bei den Digitalen Pins ist noch zu beachten ob eine PWM, Pulsweiten Modulation, benötigt wird. Hierfür gibt es spezielle Pins die im Pinlayout des Arduino MEGA zu finden sind. Unsere Pinbelegung sieht wie folgt aus:
Analog:
- A0 Stromsensor (LEM)
- A1 Potentionmeter
- A5 Drucksensor
Digital:
- D3 HAL Sensor
- D5 MosFet Steuersignal
Das Program testet alle verfügbaren Sensoren, in dem es die Daten der einzelnen Sensoren ausliest und die zurückgelieferten Werte auf dem Seriellenmonitor der Arduinoprogrammierumgebung ausgibt. Dies ist im Bild Messwerte zu sehen. Desweiteren ist dort zu sehen, wie sich der Wert des HAL Sensors ändert wenn ein Magnetischesfeld in den Messbereich des Sensors geführt wird. Die Werte des Drucksensors ändern sich minimal, dies ist auf Schwankungen in dem Sensor zu führen, da kein Druck auf den Sensor gegeben wurde. Der Wert 52/51 ist der aktuelle Luftdruck im Raum. Die Stellung des Potentionmeters lässt sich an dem Wert Poti ablesen, die 1024 sind so zu interpretieren, dass der Drehpotentionmeter am Anschlag ist und den höchsten Widerstand besitzt. Der LEM, Stromsensor, liefert laut Datenblatt erst ab 6 At optimale Werte. Festgestellt wurde, dass bei keiner Last, sich ein Wert um 517 einstellt.
Um dem Program eine etwas Anspruchsvollere Aufgabe zu geben, kann der Motor mittels Potentionmeter und Drucksensor gestartet und gestoppt werden. Die Ansteuerung des Motors erfolgt über ein PWM Signal auf den MosFet. Um beide Sensoren einen gleichwertigen Einfluss auf die Steuerung des Motors zu gewährleisten, werden beide Rohwerte auf 1/64 geteilt und miteinander multipliziert, sodass sich ein Wert zwischen 0 und 255 einstellt. Wird er Potentiometer Wert erhöht, so ist es leichter mit dem Drucksensor den Motor zu starten. Je niedirger der Potentionmeter Wert, desto mehr Druck muss auf den Drucksensor gegeben werden, damit sich der Motor startet. Hier unser Code:
Neben dieser Erklärung haben wir ein Video erstellt das einige Funktionen, sowie die Steuerung eines Motors darstellt. Im Video wird der Motor aktiviert, sobald ein voreingestellter Druck-Schwellwert überschritten wird: Funktionscheck
Alle anderen Funktionen der Platine sind funktionsfähig. Alle Sensoren und Aktoren konnten angesteuert werden. Einzig die Schnittstellen(I²C und RS485) konnten aufgrund fehlender Gegenstücke nicht getestet werden.
Lessons learned und Fazit
Die Fertigung einer Platine in Form eine Shield für den Arduino Mega2560 ist nicht so einfach wie vermutet. Viele Kleinigkeiten können dazu führen, dass die Platine nicht bestückt, befestigt oder funktionsfähig ist.
- Schaltplan Vorgabe:
Der Schaltplan enthielt bereits einen Fehler bei der I²C Schnittstelle. Dieser wurde glücklicherweise vor Fertigung der Schaltung entdeckt. Es bietet sich an jede Schaltung, egal ob eigene Entwicklung oder Vorgabe vorher auf dem Steckbrett zu prüfen. Eine Erkenntnis war ausserdem: Massen müssen abgeglichen werden. Das heißt alle GND, sei es vom Arduino oder von externen Spannungsquellen müssen verbunden werden(siehe rotes Kabel auf der Platine). Ohne dieses Kabel funktioniert die Entladung des MosFets nicht.
- Multisim Schaltplan:
Es bietet sich an immer mit Verknüpfungen und Templates zu arbeiten. Das erhöht die Übersicht. Fehler können sofort erkannt werden. Am besten die Schaltung nochmals auf Steckbrett nach eigenen Schaltplan aufbauen. Bauteile die mit einem Footprint ausgestattet sind erscheinen blau. Nur diese Bauteile können erfolgreich in ULTIBAORD2014 migriert werden.
- Ultiboard Schaltung:
Bigger is always better. Nutzt wie beschrieben große Lötaugen, viel Lötfreiraum, lasst viel Platz zwischen den Leiterbahnen und Bauteilen um Kollisionen zu vermeinden. Footprints müssen für spezielle Bauteile selbst erstellt werden. Seid hier präzise, desto einfacher ist später das Löten.
- Platinenfertigung:
Druckt die Platine zunächst auf Papier und steckt die Bauteile auf, Nutzt einen Kugelschreiber als "Lötkolben" und testet die Zugänglichkeit.
- Funktionscheck:
Das wichtigste ist eine gute Ausstattung, Multimeter, Oszilloskop.
Und das Wichtigste: Baut nicht die gesamte Platine falsch herum zusammen. Das ist der Grund warum wir die Verbindungen mit Kabeln von Innen nach Außen führen mussten. Anhand des großen "Lessons Learned" ist abzuleiten das wir viel mitgenommen haben. Miniprojekte sind ideal um praktische Erfahrungen zu sammeln, die Erfarungen lassen sich in viele andere Bereiche übertragen.
Download
Youtube Funktionscheck
Weblinks
Einzelnachweise
[1]
siehe Nachweise und Links im Text
→ zurück zum Hauptartikel: Angewandte Elektrotechnik Praktikum