http://sites.schaltungen.at/arduino-uno-r3/einfach-arduino
http://www.linksammlung.info/
http://www.schaltungen.at/
Wels, am 2016-12-24
BITTE nützen Sie doch rechts OBEN das Suchfeld
[ ] [ Diese Site durchsuchen]
DIN A3 oder DIN A4 quer ausdrucken
**********************************************************************************
DIN A4 ausdrucken (Heftrand 15mm / 5mm)
****************************************************************
Untergeordnete Seiten (3):
Siehe auch ARDUINO UNO R3 ATmega328P
http://sites.schaltungen.at/arduino-uno-r3/arduino-uno-r3-atmega328p
ATmega48 oder ATmega88 oder ATmega168 oder ATmega328
Minimalschaltung eines ARDUINO-Boards
Minimalbeschaltung ARDUINO
Standalone ARDUINO UNO
Bare Bone BreadBoard ARDUINO
Building an Arduino on a Breadboard
Dieses Tutorial zeigt Ihnen, wie Sie ein ARDUINO UNO R3 kompatibles Steckbrett mit einem
ATMEL ATmega8 ATmega48 ATmega88 ATmega168 ATmega328p AVR Mikrocontroller
und FTDI FT232 Breakout Board von SparkFun bauen.
https://www.arduino.cc/en/Main/Standalone
Tabelle pin-x Pinxx Belegung
ATmega328p Pin-Etikette
ATmega328p Minimalbeschaltung
ARDUINO Schaltung mit nur 8 Bauteilen
falsche Kurzschlussbrücke zwischen AVcc(Pin20) und Aref(Pin21).Pin21 offen lassen oder wenn der ADC verwendet werden soll,
Pin21 Kondensator 100nF gegen GND, sonst nix.
http://arduino-praxis.ch/2010/05/20/arduino-schaltung-mit-8-bauteilen/
Der
ICSP-Stecker ist üblicherweise 6-pol. und wird wie folgt angeschlossen:
ARDUINO UNO 6-pol ICSP-Stecker zu ATmega328p
pin-1 MISO zu Pin18 PB4
pin-2 +5V
pin-3 SCK zu Pin19 PB5
pin-4 MOSI zu Pin17 PB3
pin-5 RESET zu Pin01 RESET
pin-6 GND
Zur Sicherheit lohnt sich immer ein Blick auf den Stromlaufplan des jeweiligen Arduino-Boards, zu nehmen.
Arduino Uno siehe
https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
falsche Kurzschlussbrücke zwischen AVcc(Pin20) und Aref(Pin21).Pin21 offen lassen oder wenn der ADC verwendet werden soll,
Pin21 Kondensator 100nF gegen GND, sonst nix.
ARDUINO UNO Rev.3 Schematic
Zur Sicherheit lohnt sich immer ein Blick auf den Stromlaufplan des jeweiligen Arduino-Boards, Arduino Uno siehe
http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
falsche Kurzschlussbrücke zwischen AVcc(Pin20) und Aref(Pin21).Pin21 offen lassen oder wenn der ADC verwendet werden soll,
Pin21 100nF Kondensator gegen GND, sonst nix.
ATmega328p Minimalbeschaltung
ATmega328p ARDUINO-UNO
PIN19 = pin-13
PIN18 = pin-12
PIN17 = pin-11
Benötigte Bauteile:
Stk. Bezeichnung ~Preis
1 ATMEL ATmega 328p 2,00 €
1 Widerstand 10kOhm 0,02 €
1 Widerstand 220 Ohm 0,02 €
1 Quarz 16 MHz 0,20 €
2 Folienkondensatoren 22pF 0,10 €
1 LED 0,10 €
1 IC-Sockel DIL-28 0,10 €
SUMME ~ 3,00 €
ARDUINO-Board als USB Schnittstelle
Der FTDI-IC ist ein SMD Bauteil, dass ein USB-Signal in ein serielles Signal umwandeln kann.
Es ist die Grundlage der Arduino-USB-Schnittstelle.
http://www.arduino-tutorial.de/category/schaltungen/
Barebones-Arduino
Arduino als Stand Alone Version
Um ein Arduino auf dem Breadboard zu bauen, benötigt man
z.B. einen ATmega368P IC, auf dem sich der Arduino Bootloader befinden (Siehe
Arduino Bootloader).
Dann fängt man am besten mit der bekannten Spannungsregler-Schaltung an.
Arduino Bootloader auf ATMEGA Chip übertragen
http://www.arduino-tutorial.de/2016/09/arduino-bootloader-auf-atmega-chip-ubertragen/
Arduino als Stand Alone Version
Um ein ARDUINO auf dem BreadBoard zu bauen, benötigt man z.B. einen ATmega328 IC, auf dem sich der ARDUINO Bootloader befinden
Dann fängt man am besten mit der bekannten Spannungsregler-Schaltung an.
Nun wird der IC platziert.
Jetzt kommen die Stromanschlüsse und Federleisten dazu. Die Federleisten sind optional und nicht unbedingt nötig.
Als nächstes wird die Schaltung für den Reset-Button hinzugefügt. Ein 1kOhm Widerstand entstört das Signal.
Nun wird noch der Taktgeber für den IC angeschlossen. Es handelt sich um einen 16MHz Quarz und zwei Keramikkondensatoren 22pF (Piko-Farad).
Nun ist das Setup für das Barebones-Arduino fertig und kann z.B. mit einem anderen Arduino-Board programmiert werden.
Die Belegung der Pins sieht folgender Maßen aus:
Ist die Programmierung abgeschlossen, kann man das Arduino-Board entfernen und das BareBones-Arduino mit einem Netzteil betreiben.
http://www.arduino-tutorial.de/2010/06/barebones-arduino/
Bare Bone Arduino
10.1.1 Minimalschaltung Arduino
Abbildung 10.1 zeigt die Minimalschaltung des ARDUINO.
Der zentrale Baustein ist der Microcontroller (IC1) mit der Typenbezeichnung
ATmega328p.
Die Kondensatoren C2 und C3 und der Quarz (Q1) erzeugen den Takt für die Microcontrollerschaltung.
Mit dem Widerstand R1, dem Kondensator C4 und dem Taster T1 ist eine Reset-Schaltung realisiert.
Über den Widerstand R1 ist der Reset-Anschluss des Microcontrollers (Pin-1) mit HIGH verbunden.
Durch Druck auf den Taster wird der Reset-Anschluss mit 0V (Low) verbunden und der Microcontroller wird zurückgesetzt.
Zusätzlich kann über den Kondensator C4 und den DTR-Anschluss des FTDI-Steckers von außen ein Reset erzeugt werden.
Der FTDI-Anschluss dient dabei als Schnittstelle zum angeschlossenen Rechner und liefert gleichzeitig die Spannungsversorgung.
Am FTDI-Anschluss muss ein so genannter USB-Seriell-Wandler angeschlossen werden.
Wie der Name aussagt, ist das das Bindeglied zwischen dem USB-Anschluss des Rechners und der seriellen Schnittstelle der Arduino-Schaltung.
Abb. 10.1 Minimalschaltung Arduino
falsche Kurzschlussbrücke zwischen AVcc(Pin20) und Aref(Pin21).Pin21 offen lassen oder wenn der ADC verwendet werden soll,
Pin21 100nF Kondensator gegen GND, sonst nix.
Stückliste (Minimalschaltung Arduino):
Microcontroller ATmega328 mit Arduino Bootloader (IC1)
Quartz 16MHz (Q1)
Widerstand 10kOhm (R1)
2 Kondensator 22 pF (C2, C3)
2 Kondensator 100nF (C1, C4)
Reset-Taster (S1)
Stiftleiste 6-polig (Stecker FTDI)
10.1.2 Bare Bone BreadBoard Arduino
Die Minimalschaltung mit den neun Komponenten aus dem vorherigen Abschnitt ist die Basis für den Bare Bone Breadboard Arduino,
das Grundgerüst oder Grundschaltung eines Arduino-Boards auf dem Steckbrett.
Die Steckbrett-Variante eignet sich ideal für die Entwicklungsphase eines Projekts.
Die Schaltung ist schnell aufgebaut und kann durch die lötfreie Verbindungstechnik schnell verändert werden.
Für den Upload der Arduino-Sketches wird auch ein USB-Seriell-Wandler verwendet, der am
6-poligen FTDI-Stecker angeschlossen wird.
Abbildung 10.2 zeigt den Schaltungsaufbau auf dem Steckbrett.
Abb. 10.2: Breadboard Arduino
10.1.3 Really Bare Bone Board (RBBB) € 11,00
Bauteile für Sensor-Anwendungen in Haus und Garten oder andere kleine Anwendungen, die mit Arduino realisiert werden, sind meist in einem festen und stabilen Gehäuse untergebracht.
Oftmals muss die Anwendung dabei so klein wie möglich sein, damit sie in das gewählte Gehäuse passt, oder der Anwender möchte eine kostengüstigere Arduino-Variante verwenden.
Die Steckbrettschal-tung aus dem vorherigen Abschnitt ist zwar kostengünstig, aber für Anwendungen im produktiven Einsatz meist zu unstabil.
Alle Anforderungen, kleine Abmessungen, kostengünstig und ein stabiler Aufbau, bietet das Really Bare Bone Board (RBBB) von Modern Device
http://moderndevice.com
Der RBBB ist als Minimalboard realisiert und hat sehr geringe Abmessungen.
Die schmale Leiterplatte ist 15mm breit und 80mm lang.
Produktbeschreibung
Das Really Bare Bones Board (RBBB) ist ein Mini-Board für die experimentellen Anwendungen, die kleine Prozessoren wie tragbares Computing, nahe Raumexperimente, Spielzeug-Prototyping, Künstlerprojekte oder jede Anwendung für einen relativ kleinen, kostengünstigen Mikrocontroller benötigen.
Es ist eines der kleinsten und kostengünstigsten Arduino-kompatiblen Boards zur Verfügung.
Sie können eine RBBB in weniger als einer halben Stunde, auch als Anfänger zu bauen.
Die Pin-Etiketten auf der Version B2 befinden sich nun zwischen den Pins, ähnlich dem Arduino Nano.
Wir haben vor kurzem 3,3V Modelle (nur die Spannungsregler Änderungen) und ein Bündel mit einem Kabel und einem BUB II, die hier zu finden sind.
Auch erhältlich in Europa bei Digitalsmarties.net.
Technische Daten
2.1mm Steck-Buchse
Optiboot Bootloader (Uno Einstellung)
ATmega328 Chip
L4931CZ50-AP TO-92 Low-Dropout-Regler (300 mA)
Hinweis:
Regler wie MC7805CT-BP, LM2940 oder andere TO-220 1A Regler machen große Alternativen, wenn Sie mehr Power auf Ihrem Steckbrett benötigen.
Wir haben jetzt auch diese mit 3.3v Regulatoren (L493133)
Einstellungen
Nicht zusammengebauter Satz
Nur PCB (keine Teile, keine Überschriften)
Wenn Sie nach einem RBBB mit den bereits gelöteten Teilen suchen, sollten Sie den RBBB Pro kaufen.
Resources
http://cdn.shopify.com/s/files/1/0038/9582/files/RBBB_Instructions_06.pdf?1260749296
Abb. 10.3: Really Bare Bone Board (Bild: mode rndevi ce.com)
https://moderndevice.com/product/rbbb-kit/
Kondensator 100nF (in gestrichelten Linien) ist nicht auf der Platine, sondern es wird empfohlen diesen bei BreadBoard Schaltungen einzusetzen
Alle digitalen und analogen Ports des Arduino sind beim RBBB seitlich auf Stiftleisten geführt.
Das RBBB-Board kann so auch in ein Steckbrett oder eine Prototy-penplatine gesteckt oder gelötet werden.
Der 6-polige Anschluss für den FTDI-Stecker ist an der schmalen Seite positioniert und erlaubt ein einfaches Anschließen des Programmierkabels.
Für eigenständige Anwendungen kann eine Versorgungsspannung von einer Batterie oder einem Netzteil an der Jack-Buchse angeschlossen werden.
Bei der Auswahl eines RBBB als Arduino-Board ist immer zu beachten, dass diese Aufbauvariante mechanisch nicht kompatibel ist mit den Arduino Shields.
In der Praxis heißt das konkret, dass man, falls man Shields verwenden möchte, einen zusätzlichen Adapter verwenden muss.
Dieser Adapter, in Form einer Leiterplatte, verbindet die Anschlussstifte des RBBB mit dem Shield.
Einen passenden Adapter liefert Wicked Device:
http://wickeddevice.com/index.php?main_page=product_info&cPath=2&products_id=86
ARDUINO Praxiseinstieg - Thomas Brühlmann - BUCH-Seite 443
Barebone Arduino
Ein Barebone Arduino ist eine minimale Arduino-Schaltung, bei der nur die nötigsten elektronischen Komponenten neben dem Arduino-Microcontroller verwendet werden.
Die Schaltung für diese Minimalbeschaltung zeigt, dass neben dem Atmel-Controller nur noch Komponenten für den Takt und für die Reset-Schaltung notwendig sind.
Wie man einen solchen Minimal-Arduino ohne Leiterplatte aufbauen kann, zeigt das
Fritzing-Projekt Barebones Arduino.
Als Leiterplatte wird dabei ein Steckbrett (Breadboard) eingesetzt. Mit dem Steckbrett als Leiterplatte müssen keine Lötarbeiten ausgeführt werden.
Die elektronischen Bauelemente werden dabei in die vorhandenen Steckkontakte gesteckt.
Die Spannungsversorgung für die Anwendung kann nun entweder aus einer Batterie oder einem Netzteil geliefert werden.
Beim Batterieeinsatz muss zusätzlich eine 5 Volt-Spannung mittels Spannungsregler verwendet werden.
Mit einem Labornetzeil kann man die 5 Volt direkt einstellen.
Bild: Barebone Arduino auf Steckbrett aufgebaut
Der Aufbau im Bild oben zeigt die minimale Beschaltung.
Die Stromversorgung wird wie erwähnt über die beiden Bananenstecker (gelb und rot) aus dem Netzteil geliefert.
Was bei dieser Ausführung eines Arduino-Boards fehlt, ist die Möglichkeit der Kommunikation mit der Entwicklungsumgebung via USB-Port.
Auf dem Arduino-Standardboard ist hierzu eine Schnittstellenschaltung (USB-Serial-Adapter) vorhanden.
Für Arduino-Ausführungen ohne diese Schnittstelle kann dazu ein externes Breakoutboard, beispielsweise das
USB BUB Board von Modern Device, eingesetzt werden.
Mit der Verwendung dieses Adapterboards kann sogar auf die beiden oben beschriebenen Varianten der Spannungsversorgung verzichtet werden.
Die Versorgung erfolgt nämlich über den USB-Port.
Wie dieses Breakout-Board und weitere Varianten der Kommunikation verwendet werden, wird in einem späteren Post beschrieben. http://webmeister.ch/blog/2010/03/barebone-arduino/
Sie können leicht bauen ein Barebones Arduino sich. Dieses Projekt zeigt einen panierten Arduino ohne FTDI Chip.
Dies bedeutet, dass keine USB-Konnektivität (dies könnte jedoch mit einem USB-Serial Breakout Board durchgeführt werden).
Verwenden Sie einen ATMEGA168, einen 1kΩ Widerstand, einen Knopf, zwei 22pF Kondensator, zwei 10μF Kondensator, 5V Spannungsregler und einen 16MHz Taktkristall.
Sie könnten den Chip mit einem USB-Seriell-Breakout-Board programmieren, oder man könnte den Chip mit einem Arduino-Board programmieren und ihn dann in die Schaltung legen.
Die Stromquelle sollte mindestens 7 Volt sein (wir haben noch nicht diesen Teil).
http://fritzing.org/projects/barebones-arduino/
Batteriecontroller - ein Selbstbauprojekt Teil 2
Ersatz des ARDUINO UNO R3 zur Kostenreduktion
Kern des Arduino uno ist um einen
ATmega 328P der Firma Atmel.
Der Chip im DIL-28 Gehäuse (Reichelt 2,15€) enthält bereits alle wesentlichen Funktionen einschließlich aller analogen und digitalen Schnittstellen.
Um mit ihm den Arduino für den Batteriecontroller vollständig ersetzen zu können, sind nur wenige zusätzliche Bauteile notwendig.
Für meinen Versuchsaufbau lag nahe, auf einer Lochrasterplatte mit den Maßen des Arduino einen pinkompatiblen zu bauen.
Diesen kann man dann gegen den ARDUINO UNO R3 austauschen.
Diese wenigen Bauteile können den Arduino auf dem Batteriecontroller vollständig ersetzen.
Die Schaltung selbst ist extrem simpel, da zwingend nur ein Quarz zur Takterzeugung benötigt wird.
Diesen habe ich auf einem Sockel montiert um leicht mit verschiedenen Frequenzen experimentieren zu können.
Die LED mit Vorwiderstand an D13 könnte man auch weglassen. Ich benutze sie im Programm lediglich um das Anspringen der Interruptroutine im Sekundentakt kontrollieren zu können.
Diese auf das absolute Minimum reduzierte Schaltung kann den Arduino nur für den Betrieb als Batteriecontroller ersetzen.
Um den Chip zu programmieren ist weiterhin ein Arduino notwendig.
Dazu muss in den neu gelieferten Chip zunächst ein Bootlader geschossen werden. Anleitungen, wie man das mit Hilfe des Arduino macht, gibt es reichlich im Internet (
z.B. hier).
Den so vorbereiteten Chip kann man in den Sockel des Arduino setzen und dann ganz normal mit der Arduino Entwicklungsumgebung (IDE) programmieren.
Danach kann man den Chip ohne Einschränkungen für den Batteriecontroller nutzen.
Die Schaltung ist pinkompatibel zum Arduino. Es sind nur die Anschlüsse verdrahtet, die für den Betrieb als Batteriecontroller benötigt werden.
Gegenüber dem Original des Arduino uno hat diese Schaltung nicht nur den Vorteil die Kosten drastisch auf einen Bruchteil zu reduzieren.
Auch der benötigte Strom, etwa 55mA beim Original, wird etwa halbiert.
Das kommt den Bemühungen zur Reduktion des Eigenverbrauches sehr entgegen, ist aber allein noch nicht ausreichend.
Reduktion des Betriebsstromes
Wie eben beschrieben hat der Ersatz des Arduino durch den den (fast) nackten Prozessor nicht nur eine Kosten- sondern auch eine deutliche Reduktion des Betriebsstromes zur Folge.
Eine weitere Reduzierung lässt erreichen, wenn man die Betriebsspannung von 5V aus der Batteriespannung nicht über einen billigen Längsregler wie den 7805 sondern mit einem getakteten Regler erzeugt.
Dafür muss man allerdings deutlich tiefer in die Tasche greifen.
Ich habe, weil gerade greifbar, meinen Versuch mit einem
TSR 1‑2450 (Reichelt 5,42 €) gemacht.
Das Ding kann 1 A und ist damit deutlich überdimensioniert.
Der Strom für die Gesamtschaltung ohne Sensor betrug damit nur noch 9,7 mA.
Wenn man die CPU, durch Austausch des 16 MHz Quarzes gegen einen mit 4,1943 MHz, langsamer taktet, geht der Strom weiter auf 6,4 mA zurück.
Leider kommen für jeden angeschlossenen Hall-Sensor wieder 5 mA dazu.
Das angestrebte Ziel von ca. 10 mA ist aber zumindest für die den Anschluss nur einer Batterie erreicht.
Eine weitere Reduktion des Betriebsstromes von 6,4 auf unter 4 mA ließe sich erreichen,
wenn man die Schaltung nicht mit 5 sondern mit 3,3 V betreiben würde, was vom Prozessor aus, zumindest für die niedrigere Taktfrequenz, zulässig ist.
Dann könnte man allerdings nicht mehr die Hall-Sensoren benutzen.
Genauigkeit und Auflösung
Von unbedarften Anwendern wird die Begriffe Genauigkeit und Auflösung häufig miteinander verwechselt.
Sie gehen davon aus, dass ein Messgerät, welches 3 Stellen hinter dem Komma anzeigt auch entsprechend genau ist.
Dem ist natürlich nicht so.
Eine Spannungsmessung, bei der die Spannung vor der Messung durch einen aus Widerständen aufgebauten Spannungsteiler herabgesetzt wird,
kann, egal wie genau die Messung erfolgt, niemals besser als die Toleranz der Widerstände sein. Ich habe in meiner Schaltung durchweg Widerstände mit einer Toleranz von 1% verwendet, da geringer tolerierte, zumindest im üblichen Elektronikhandel nur schwer zu bekommen sind.
Eine andere Sache ist die Auflösung, die direkt von den verwendeten Analog/Digital-Wandlern (ADC) abhängt.
Die in der CPU bereits integrierten ADC haben eine Auflösung von 10bit,
d.h. die Referenzspannung (hier 5V) wird 210 = 1024 Schritte aufgelöst.
Da wir den Stromfluss sowohl in als auch aus der Batterie messen müssen entspricht der mittlere Wert 512 null Volt.
Bei kleineren Werten wird die Batterie ent-, bei größeren geladen.
Wollen wir einen 100A Stromsensor verwenden ist die Auflösung,
d.h. der kleinste Schritt den wir unterscheiden können 100A / 512 = 0,195A.mp
Mir ist das entschieden zu viel.
Aus dem SMD wurde ein besser handhabbarer "DIL"-Chip
Blockschaltbild des MCP3426
Bei der Suche nach einem höher auflösenden und trotzdem preiswerten ADC wurde ich auf den
MCP 3426 (Reichelt 1,76€) der Firma Microchip aufmerksam.
Der hat zwei voneinander unabhängige Kanäle, bereits integrierte Vorverstärker, über I²C leicht anschließbar und lässt sich per SW umschaltbar mit als 12, 14 oder 16 Bit ADC betreiben.
Nachteilig ist, dass es ihn nur im SMD-Gehäuse gibt, was ihn für Bastelzwecke etwas unhandlich macht.
Ich half mir, indem ich ihn auf den Ausschnitt einer Musterplatine lötete und diesen mit Sockelstiften versah.
So kam ich zu einem gut handhaben "DIL"-Muster.
Da der ATmega 328 bereits hardwaremäßig eine I²C-Schnittstelle hat, ist der Anschluss simpel.
Die der SW, dank einer Lib (wire.h), auch.
Unerwartete Schwierigkeiten ergaben sich daraus, dass das Programm nicht innerhalb der Interruptroutine, in der ich im Sekundenrhythmus die Daten erfasse, lief.
Ich half mir, indem ich ein Flag setzte und das Einlesen in die Loop verlegte.
Dank der relativ hohen Ausgangsspannung des Hall-Sensors konnte ich die Vorverstärkung des MCP 3426 auf 1 setzen.
Für die Auflösung wählte ich 14 Bit, was 24 mA bei einem 100 A-Sensor entspricht.
Man könnte natürlich auch 16 Bit wählen und damit eine Auflösung von 6,1 mA erreichen.
Einerseits ist das bei einer Genauigkeit von 1% relativ witzlos und andererseits würde sich damit ein anderes Problem verschärfen.
Der Hall-Sensor hat seinen Nullpunkt genau in der Mitte der Versorgungsspannung.
Die ATmega CPU benutzt die gleiche Versorgungsspannung als Referenz für den integrierten ADC.
Eine leichte Schwankung der Spannung spielt von daher keine Rolle, weil sie sich auf beide Komponenten gleichermaßen auswirkt.
Mit Verwendung des externen ADC wird das anders. Der MCP 3426 benutzt eine eigene hochgenaue Referenz.
Der Nullpunkt des Sensors und der des ADC werden deshalb nie übereinstimmen und mit großer Wahrscheinlichkeit auch noch driften.
Ein Abgleich der Nullpunkte ließ sich relativ leicht durch eine kleine SW-Routine erreichen.
Die Drift, die sich im Versuch bestätigte, ist dagegen nicht so einfach in den Griff zu bekommen.
Für mich ist das Grund genug nicht weiter auf einen Hall-Sensor sondern auf die gute alte Shuntmethode zu setzen.
Zusammenfassung und Ausblick
An dieser Stelle habe ich die Arbeiten vorläufig abgebrochen.
Mein Ziel etwas tiefer in die Programmierung des Arduino einzudringen habe ich erreicht.
Von vornherein war klar, dass ich den Batteriecontroller zumindest aktuell nicht wirklich selbst brauchen würde, da mein über 10 Jahre alter Mobitronic immer noch zu meiner Zufriedenheit arbeitet.
Es würde mich freuen, wenn meine Arbeiten den einen oder anderen zu eigenen Überlegungen anregen würden.
Wenn jemand die Source der entstanden SW haben möchte, bin ich gern bereit diese (as it is) weiterzugeben.
Vielleicht findet sich ja auch jemand, der bereit und in der Lage ist eine Leiterplatte zu entflechten, ein Gehäuse zu konstruieren und evt. sogar eine Kleinserie zu produzieren und zu vertreiben.
Für den Fall biete ich gern an, Schaltung und SW zur Serienreife weiterzuentwickeln.
Ich hätte da noch einige Ideen, die ich jetzt aber noch nicht verraten möchte.
Quelle:
http://www.mergerandfriends.de/technik/strom-an-bord/batterien/44-battericontroller-2
Schaltplan des ELVuino für den normalen Programmier- und Testbetrieb
704_d_ARDUINO-x_ELVjournal 2013-04s74 +++ ELVuino - ATmega328p Minimalschaltung_1a.pdf
Für das Programmieren des Bootloaders ist die Grundschaltung wie hier gezeigt leicht zu modifizieren
ATmega48 oder ATmega88 oder ATmega168 oder ATmega328
falsche Kurzschlussbrücke zwischen AVcc(Pin20) und Aref(Pin21).Pin21 offen lassen oder wenn der ADC verwendet werden soll,
Pin21 100nF Kondensator gegen GND, sonst nix.
elektor Spulen-Checker 0,1uH bis 100mH 2007-06s51
WAV-Türgong
Von Michael Gaus (D)
Dieser elektronische Türgong mit
ATmega328P ist eigentlich ein kleiner WAV-Player, der per Klingelknopf aktiviert wird und dann eine kleine WAV-Datei über die integrierte PWM-Einheit abspielt.
So erhält man auch bei der Türklingel individuelle Klingeltöne wie beim Handy, die man obendrein auch noch selbst laden kann.
Die WAV-Datei wird im On-chip-Flash des Mikrocontrollers gespeichert, es wird kein zusätzlicher Speicher benötigt.
Um mit einer minimalen Anzahl von Bauelementen auszukommen, wurde auf den eigentlich erforderlichen Tiefpass am PWM-Ausgang des AVR-Controllers verzichtet.
Stattdessen wird über einen Elko nebst Vor-widerstand direkt ein kleiner Lautsprecher angeschlossen.
Zu beachten ist dabei, dass man hier keinen Verstärker und keine Aktivboxen ohne einen vorgeschalteten Tiefpass anschließen kann, da diese durch das ungefilterte PWM-Signal zerstört werden könnten.
Unmittelbar nach dem Einschalten der Spannungsversorgung wird der im Türgong gespeicherte Sound abgespielt und der AVR-Controller anschließend in den stromsparenden Standbymodus versetzt.
Das Betätigen des Tasters beendet den Standbymodus und veranlasst eine erneute Wiedergabe der WAV-Datei.
Die WAV-Dateien müssen folgendes Format aufweisen:
RIFF-WAVE Format/PCM, 8-bit, mono und 8kHz Samplingrate.
Der Flash-speicher des ATmega328 ist 32KB groß.
Für die Firmware sind 1KB (also 1024 Bytes) reserviert, sodass für die WAV-Datei maximal 31744 Bytes zur Verfügung stehen.
Das enspricht einer Gesamtspieldauer von maximal fast 4 Sekunden.
Die Firmware liegt im Bereich von 0x0000-0x03FF, ab 0x0400 beginnen die WAV-Daten.
Falls die WAV-Datei noch nicht im oben genannten PCM-Format vorliegt, kann sie mit dem Freewaretool Audacity [1] konvertiert werden.
Dazu öffnet man die Datei in Audacity und wählt unten links bei „Projektrate" 8000Hz aus.
Außerdem kann man bestimmte Bereiche der WAV-Datei markieren und ausschneiden, zum Beispiel Pausen am Anfang oder Ende.
Um bei Dateien im Stereoformat auf Mono zu wechseln, klickt man im Kästchen mit dem Dateinamen auf den kleinen Pfeil und wählt „Stereotonspur aufteilen".
Anschließend kann man zum Beispiel
den rechten Tonkanal durch Klick auf das X löschen und beim linken Tonkanal durch erneuten Klick auf den kleinen Pfeil „Mono" auswählen.
Bei „Bearbeiten" => „Einstellungen" muss bei „Dateiformat" als unkompri-miertes Exportformat „WAV (Microsoft 8 bit PCM)" eingestellt werden.
Um die Datei zu speichern, markiert man den gewünschten Bereich und wählt unter „Datei" den Punkt „Exportieren als WAV" aus.
Nun müsste die Datei im korrekten Format vorliegen.
Im Windows Explorer kann man mit einem Rechtsklick auf die Datei unter „Eigenschaften" und dann „Dateiinfo" das Format nochmals überprüfen.
Um die WAV-Datei in das Hexfile zur Programmierung des ATmega328P zu bekommen, wird ein Tool „hex2bin" [2] verwendet.
Das Tool konvertiert die binäre WAV-Datei in das Intelhex-Format und fügt die Daten in die Hexdatei ein, die den AVR-Code enthält. Somit entsteht eine Hexdatei bestehend aus Firmware und WAV-Datei, die in den ATme-ga328P programmiert wird.
Der komplette Konvertiervorgang wird über die Batchdatei „convert.bat" gestartet.
Die Firmware liest aus dem WAV-Header die Größe der WAV-Datei aus und spielt somit die WAV-Datei in der korrekten Länge ab.
Ein fertiges Hexfile besteht aus der Firmware sowie einer WAV-Datei.
Eine WAV-Datei, die einen Gong („Dingdong") als Sound enthält, ist im ZIP-File unter dem Namen „
tuergong. hex" bereits enthalten.
Dieses kann direkt in den ATmega328P programmiert werden. Das im Unterverzeichnis „
firmware/default" enthaltene Hexfile „
code.hex" ist hingegen nur die reine Firmware (also ohne integrierte WAV-Datei).
Es kann verwendet werden, falls eine eigene WAV-Datei integriert werden soll, die per Batchfile (wie zuvor beschrieben) dieser Hexdatei angegliedert wird.
Der Code für den
ATmega328P wurde im AVR-Studio mit dem freien C-Compiler WINAVR erstellt.
Das komplette Projekt inklusive Hex-Datei ist im Verzeichnis „
firmware" in der ZIP-Datei (Download unter [3]) enthalten.
Die Fusebits für den AVR müssen wie folgt programmiert werden:
Low-Fuse: 0xE2
High-Fuse: 0xD9
Extended-Fuse: 0xFF
110080-11
Links:
[1] http://audacity.sourceforge.net
[2] http://hex2bin.sourceforge.net
[3] wvvw.elektor.de/110080
elektor WAV-Türgong 2011-07s92
ATMEGA328P-PU Bootloader laden vom Arduino Uno als ISP
Der Arduino Bootloader soll in einen neuen ATMEGA 328P-PU IC auf dem Steckbrett geladen werden.
Dazu wird der Arduino Uno als ISP (In-System-Programmer) verwendet. Dazu sind 4 Schritte notwendig.
1. Den UNO zum ISP Programmer umfunktionieren
Als erstes wird der UNO mit der Programmer Software geladen.
Dazu darf das Steckbrett noch nicht angeschlossen sein.
In der Arduino IDE unter Datei > Beispiele > ArduinoISP wird das ISP Programm geladen.
Die Einstellungen sind Tools > Board > Arduino UNO und die richtige COMx Schnittstelle.
Dann einfach hoch laden.
2. Das Steckbrett vorbereiten
Als nächstes wird das Steckbrett mit dem ATMEGA328P-PU angeschlossen. ( Sollte direkt hinter der 328 das P fehlen, wird das so nicht funktionieren, dann hilft Google weiter.)
Die Pinbelegung
Dann wird der 16MHz Quarz auf das Steckbrett gesetzt zwischen Pin09 und Pin10. Die beiden Kondensatoren mit 22nF fallen hier weg, sie wurden nicht benötigt.
Für die Entstörung der Stromversorgung wird noch ein 100nF Keramik Kondensator in die Stromversorgung gesetzt zwischen Pin07 und Pin08.
Es werden 6 Leitungen vom Uno zum Steckbrett gezogen.
ARDUINO UNO R3 > ATmega328p
GND > Pin08
+5V > Pin07
pin-10 > Pin01 Reset
pin-11 > Pin17 MOSI
pin-12 > Pin18 MISO
pin-13 > Pin19 SCK
Zusätzlich kann noch die LED13 mit Vorwiderstand auf das Steckbrett gesetzt werden mit dieser Verkabelung.
IC Pin 19 > Widerstand 330-1000 Ohm > Diode (langes Bein) / Diode (kurzes Bein) > GND
Damit kann später die Funktion prima überprüft werden.
Arduino Uno als ISP
3. Den Bootloader auf das Steckbrett laden
Dann wird das Board ausgewählt Tools > Board > Arduino Uno , der richtige Serielle Port eingestellt, unter Tools
> Programmer > Arduino as ISP und mit Tools > Bootloader installieren der Bootloader auf das Steckbrett IC übertragen.
4. Das Programm auf das Steckbrett laden
Unter Tools > Programmer > ist Arduino as ISP weiterhin eingetragen.
Dann öffne ich das Blink Beispiel unter Datei > Beispiele > Basics > Blink und lade es hoch mit Datei > Upload mit Programmer.
Das ist ein wichtiger Unterschied zu der normalen Programmierung.
Wenn Sie das einmal vergessen und wie gewohnt den Upload Button aufrufen, geht es nochmal bei Schritt 1 los, denn dann ist das Programm im UNO gelandet.
Jetzt wird die Verbindung UNO 13 getrennt, denn hier werden beide LEDs UNO und Steckbrett parallel geschaltet.
Nun blinkt nur noch die LED auf dem Steckbrett.
Damit ist das Programm Blink auf dem Steckbrett angekommen und wird richtig ausgeführt.
Jetzt wird nur noch die 5V Spannungsversorgung und GND für das Steckbrett benötigt, die anderen Leitungen können entfernt werden.
Minimalschaltung
Das bleibt als Minimal-Schaltung mit dem ATMEGA328P-PU übrig
Thermoelement Typ K an Arduino
Um ein paar Typ K Thermoelemente an das Arduino Duemilanove anzuschließen gibt es mehrere Möglichkeiten.
Ich will damit Temperaturen von 0°C bis zu 1200°C messen. Genauigkeit wäre +-5°C bis 100°C und +10°C bei 1200 wünschenswert
Das Grundwissen für Thermoelemente bekommt man hier: AD (letzte Seite)
AD595 von Analog Devices
Der AD595 ist eine 1 Chip Lösung, er hat alles integriert! Dafür auch teuer mit gut 15€ pro Chip.
Ein weiterer Nachteil ist das er eine hohe Versorgungsspannung benötigt um große Temperaturen zu messen.
Mit 5V funktioniert er bis ~ 480°C. Erst mit +15V sind 1250°C möglich.
Die Grundschaltung:
Analoge Schaltung mit MCP601/MCP602
Man kann die Auswertung auch Analog ausführen.
In der AN684 von Microchip findet sich folgende Schaltung:
Scheint viel zu sein, man kommt aber zu einem selbst bestimmbaren Ausgang, 1200°C sind damit an 5V möglich!
Analog mit AD8551
Eine noch einfachere Lösung ist mit dem AD8551 möglich:
Die verwendung einer einfachen Diode für die Kompensation und der relativ günstige AD8551 (~4€ pro Chip) machen diese Schaltung interessant.
Wenn R8 durch einen 62kΩ Widerstand ersetzt wird ist die Schaltung bis 1000°C geeignet (5mV/°C anstelle 10mV/°C)
Analog mit LTC1050
Sehr einfach ist eine Schaltung mit dem
LTC1050 möglich.
Diese wird näher auf meiner Projektwebsite vorgestellt:
http://code.google.com/p/multidisplay/wiki/TypKThermocouples
Dort ist auch der benötigte Quellcode sowie ein Schaltungsdesign zu finden.
Analog / Digital Wandler MCP3208
Der
MCP3208 ist ein 8 Kanal 12 Bit ADW der über SPI am Arduino angeschlossen wird. Er kostet ~ 6€ pro Chip.
Handling mit dem Arduino ist einfach:
http://www.arduino.cc/playground/Code/MCP3208
Mit 4 Pins am Arduino gewinnt man 8 12Bit Analoge Eingänge, nicht schlecht oder?
Die 6 Analogen Eingänge am Arduino bleiben offen, man kann damit dann insgesamt 14 Thermoelemente einlesen, cool oder?
Referenzen
die Informationen hierzu stammen aus folgenden Quellen:
Microchip Application Note AN684 Single Supply Temperature Sensing with Thermocouples
Microchip Application Note AN844 Single Supply Simplified Thermocouples Interfaces and PICmicro® MCUs
Analog Devices AD8551 OPAMP
Hallo IXP, ja der MCP3208 erhöht die Auflösung mit der das Analogsignal eingelesen wird, es muss weiterhin zuerst das Signal verstärkt werden
Es gibt mittlerweile den MCP3304 der 13 Bit bietet und das identische Layout zum MCP3208 bietet, er wird ebenfalls durch den Arduino unterstützt:
playground.arduino.cc/Code/MCP3208
Bei neuen Projekten würde ich zum MCP3304 raten!
Quelle:
http://www.designer2k2.at/home/arduino/19-thermoelement-typ-k-an-arduino.html
DIN A4 ausdrucken
****************************************************************
Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:
[email protected]
ENDE