13 in a box [110740 ELWMS]
(110740 ELWMS)We called the module Panacea.
(110740 ELWMS)
We called the module Panacea.
At power-up it will show the text 'Panacea' in the first line and ‘Elektor’ in the second line for two seconds. The LCD module has no character for copyright and there's no room for (C)...
The source has to be compiled with BASCOM-AVR version 2.0.7.4. We can't guarantee the module will work properly if other versions of the IDE are used!!!
--
Text from author 19-7-2012 (German, to be translated)
Projekt: ELWMS (EierLegendeWollMilchSau)
Entwicklerhilfe mit MiniMod18 oder Logiktester deluxe
Von Thomas Ücok
Wer kennt das nicht? Aktuelles Microcontrollerprojekt mit Schnittstellen, Peripherie etc..
Ausgangspegel überprüfen ? Her mit dem Logiktester/Multimeter…. Geht der UART schon ? Jetzt benötige ich noch einen TTL/UART-Wandler, nicht genug USB-Schnittstellen, COM-Port belegt….. Mist, ach ja, Impulse wollten auch noch gezählt werden…
Und dann ist noch kein Platz auf dem Basteltisch ? Jetzt wird alles anders ! Als ich den Minimod18 das erste mal gesehen habe, war die Idee geboren: ein Gerät entwickeln, welches möglichst viele Funktionen vereint, klein und kompakt sollte es auch sein. Beim experimentieren mit meinem Roboter-Bausatz RP6 kamen immer wieder unterschiedliche Anforderungen an ein Prüf-/Test- und Messgerät auf, dass möglichst viele Funktionen beinhalten sollte. Die Fiktion wird nun zur Realität!
Nun, der Minimod hat mittlerweile einen Nachfolger, auf den das Programm ohne Änderung portiert wurde. Nun aber zu den Funktionen des Logiktesters deluxe....
Funktionen:
- 1. Logiktester für TTL 5V/3V High-Pegel >2,4V Low-Pegel<0,4V
- 2. Frequenzmessung bis 7 Mhz !
- 3. Logiktester für CMOS 5V High-Pegel >4,4 V Low-Pegel<0,4V
- 4. Analog-Spannungsmessung 0-5V (Eingang auf 1V vorgespannt)
- 5. Impulszähler High -> Impulszählung auf Pegelwechsel nach High
(>2,4V, max. 65535 Impulse)
- 6. Impulszähler Low -> Impulszählung auf Pegelwechsel nach Low
(<0,4V, max. 65535 Impulse)
- 7. Uart-Rx Uart-Empfänger
- 8. Uart-Tx Uart-Sender mit dem Text "Hello world..."
- 9. 1-Wire-Modus – Auslesen und Anzeige der 1-Wire-ROM-ID
- 10. Pulslängenmessung Low-Pegel (max. 45 ms)
- 11. Pulslängenmessung High-Pegel (max. 45 ms)
- 12. Frequenzgenerator in den Schritten 1 kHz, 10 kHz, 100 kHz und 500 kHz
- 13. Servosignal – Der Bereich von 1-2 ms eines analogen Servosteuersignal wird grafisch und als Messwert in ms dargestellt
Bei beiden Uart-Betriebsarten sind zur Laufzeit keine anderen Baudraten einstellbar, können aber im Sourcecode mittels Konstante vorbelegt werden. Da sollte man sich bei seinen Projekten möglichst auf eine Standard-Baudrate einstellen.
Aufbau:
Als Anzeige dient ein Mini-LCD-Display mit 8*2 Zeichen , die Bedienung erfolgt mit den beiden Standard-Tastern S1 und S2. Die Stromversorgung erfolgt über das USB-Kabel und kann zur Not auch von einem kleinen USB-Netzteil kommen, belegt dann auch kein USB-Port am Rechner. Das ganze wurde noch schick in einem Logiktester-Gehäuse verpackt. Die Auswahl an passenden Gehäusen ist nicht allzu groß und fiel auf ein passendes TEKO-Gehäuse[1], der mechanische Aufwand hielt sich in Grenzen. Aufgrund der LCD-Anordnung kann man das Gerät allerdings nur noch linkshändig halten, macht aber nichts, die Taster lassen sich bequem auch mit der rechten Hand bedienen….
Hardware:
Die Schaltung besteht im Wesentlichen aus einem klassischen Aufbau mit Atmega-Controller des Typs Atmega328P mit 16 Mhz-Quarz, ISP-Header und LCD-Display mit Kontrast-Poti (P1). Mit JP1 wird optional das Backlight des LCD-Displays aktiviert. Das I2C-Eeprom 24C512 gehört zum Nachfolger des Minimod-Moduls, hat aber für diese Applikation keine Funktion. Die USB-Schnittstelle dient in erster Linie als Spannungsversorgung der Schaltung, weiterhin kann damit auch die Firmware auf den Controller gebracht werden. Das einzige ungewöhnliche dürfte der MAX4584 sein, ein Audio/Video-Switch mit I2C-Schnittstelle. Er dient zum Umschalten, der Signale der Prüfspitze auf verschiedene Eingänge des Controllers. Leider gibt es keine Universaleingänge bei der AVR-Familie, die alle Funktionen beherrschen. Die Wahl auf einen I2C-Umschalter fiel deshalb, da ich beim Minimod-Modul nach Möglichkeit nur die Stiftleiste zum Anschluss der Peripherie verwenden wollte. Aber mit dem neuen Modul ist das IC ja direkt auf der Platine gelandet. Für die Funktionen benötigen wir einen Analogeingang (ADC7, zur Messung der Pegel, Spannungsmessung und Impulszählung), zum anderen einen Zählereingang (T0) zur Frequenzmessung. Dieser wird auch als Uart-Senderausgang für den Software-Uart verwendet. Dem Analogeingang vorgeschaltet ist ein Spannungsteiler(R1, R2, R3).Dieser spannt den Eingang mit 1V vor, das entspricht in den meisten TTL-Familien dem verbotenen Bereich. Dadurch können wir auch offene Eingänge detektieren. Allerdings messen wir im Spannungsmessmodus genau diese Spannung, solange keine andere Spannung anliegt. Dieser Eingang wird also für folgende Funktionen benutzt: TTL/CMOS, Spannungsmessung und Impulszählung.
Zur Frequenzmessung wird ein Timereingang benötigt (T0). Nun wird dieser PIN auch für das LCD-Display benötigt. Hier wurde ein kleiner Trick verwendet: Während der Messung erfolgt keine LCD-Ausgabe, so dass man den PIN(PD4) für die Dauer der Frequenzmessung umprogrammieren kann und entsprechend verwenden kann.
Bedienung:
Die Bedienung erfolgt mittels der zwei Taster S1(links vom Display) und S2(na ja, rechts vom Display). Der Taster S2 dient im wesentlichen zur Auswahl der Funktionen, d.h. Mit jeder Betätigung wird ein Menüpunkt weiter geschaltet und bei Bedarf mit S1 bestätigt.
Anzeige nach dem Einschalten:
Menu -> TTL 3/5V -> FRQ.-Cnt → CMOS 5V → Analog → ImpCnt H → ImpCnt L → UART-RX → UART-TX → 1-Wire ->Pulse L → Pulse H → FRQ.-Gen
Modus TTL 3/5V:
Anzeige: TTL 3/5 V
OPEN,(HIGH),(LOW)
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Die TTL-Pegelmessung erfolgt mittels einfacher Spannungsmessung. Die Pegel sind in der Software entsprechend definiert. Alle Pegel ab 2,4 V werden als High interpretiert (gilt für Standard-TTL, ABT, AHCT, HCT und ACT)., als auch für die 3,3V-Familien (LVTTL,LVT, LVC, ALVC, LV und ALVT). Der Low-Pegel ist mit Spannungen kleiner 0,4 V definiert. Der Open-Bereich ergibt sich für abweichende Spannungen oder eben beim offenen Eingang. Dieser ist mit dem bereits erwähnten Widerstandsarray bereits auf ca. 1 V vorgespannt.[2]
Modus Frequenzmessung:
Anzeige FRQ.-Cnt
Frequenz in Hz/kHz/MHz ab 7 Mhz (overflow)
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Die Frequenzmessung erfolgt Interruptbasiert. Während der Messung erfolgt keine LCD-Ausgabe. Der gemessene Wert wird bequem entsprechend dargestellt. Für eine korrekte Messung sind nur digitale Pegel geeignet.
Modus CMOS 5V:
Anzeige: CMOS 5V
Open,(HIGH),(LOW)
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Die CMOS-Pegelmessung erfolgt genauso wie im TTL-Modus. Die Pegel sind in der Software entsprechend definiert. Alle Pegel ab 4,4 V werden als High interpretiert (gilt für CMOS, HC, AHC und AC). Der Low-Pegel ist mit Spannungen kleiner 0,4 V definiert.
Modus Analog:
Anzeige: Analog
0.99 V
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Einfache Spannungsmessung bis 5 V. Wenn Spannung im Bereich >4,98 Volt oder kleiner 0,2 Volt gemessen wird, taucht ein “!“ im Display auf.
Modus ImpCnt H:
Anzeige: ImpCnt H
xxxxx
Bedienung: Zählerstand zurücksetzen mit Taster S2
Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Der Modus erwartet einen bestimmten Pegel ( >2,4 V), erhöht dann den Zählerstand und wartet, bis der Pegel wieder einen bestimmten Wert unterschritten hat. (0,4 V)
Modus ImpCnt L:
Anzeige: ImpCnt L
xxxxx
Bedienung: Zählerstand zurücksetzen mit Taster S2
Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Der Modus erwartet einen bestimmten Pegel ( <0,4 V), erhöht dann den Zählerstand und wartet, bis der Pegel wieder einen bestimmten Wert überschritten hat. (2,4 V)
Modus Uart-Rx:
Anzeige: Uart-Rx (Baudrate<-)
Empfangender Text
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Es wird gewartet, bis Zeichen empfangen werden. Da ein Input-Befehl verwendet wird, müssen die Zeichen mit CR+LF abgeschlossen werden. Es werden nur die ersten 8 Zeichen angezeigt! Es geht ja nur um die Funktion die Übertragung zu testen, wir halten ja schließlich kein vollwertiges Terminal in den Händen....
Modus Uart-Tx:
Anzeige: Uart-Tx (Baudrate->)
transmit
Modus 1-Wire:
Anzeige 1-Wire (Search1W)
No 1Wire
bzw. wenn ein Baustein ausgelesen wurde:
10BDE2F9
010800D0 (Anzeige ID in hexadezimaler Schreibweise, Beispiel DS1820)
Bedienung: Beenden mit Taster S1 (> 3 sek.), erneute Messung bei S1< 3sek.
Beschreibung: Es wird der Read-Rom-Befehl initiiert, d.h. es darf sich nur ein 1-Wire-Device auf dem Bus befinden. Weiterhin muss auch ein entsprechender Pullup-Widerstand (typ. 4K7) und Versorgungsspannung für den Baustein vorhanden sein. Es wird der 64-bit Rom-Code ausgelesen und hexadezimal dargestellt.
Byte 1-4 → erste Zeile; Byte 5-8 → zweite Zeile
Modus Pulse L:
Anzeige: Pulse L
xxxx us(ms)
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung: Es wird auf ein Low-Pegel gewartet und die Dauer gemessen.
Modus Pulse H:
Anzeige: Pulse H
xxxx us(ms)
Bedienung: Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Es wird auf ein High-Pegel gewartet und die Dauer gemessen.
Frq.-Gen :
Anzeige: FRQ.-Gen
1 kHz (10 kHz, 100 kHz, 500 kHz)
Bedienung: Frequenzwechsel mit Taster S1 (<3sek.)
Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Dieser Modus generiert ein TTL-Signal mit den verschiedenen Frequenzen. Auch bei verfusten AVR's zu gebrauchen...
Servo-In:
Anzeige: Servo In
1.50 ms Beispiel Mittenstellung Servo
___[]___
0.83 ms Beispiel Bereichsüberschreitung < 1ms
<_______
2.12 ms Beispiel Bereichsüberschreitung > 2ms
_______>
Bedienung:
Beenden mit Taster S1 (> 3 sek.)
Beschreibung:
Dieser Modus stellt ein analoges Standard-Servo-Signal (positiv) grafisch und messtechnisch dar. Der Bereich ist für Standard-Servos mit 1-2 ms definiert, mit Mittenstellung bei 1,5 ms. Die Grenzen für die „overflow“-Anzeige sind beliebig anpassbar.
Software:
Die Software ist in BASCOM-Basic programmiert worden. Der einfachste Weg die Firmware auf den Minimod-Nachfolger zu bekommen, ist die bequeme Programmierung mittels Bootloader. Hier wird der USBASPloader verwendet, der dem MiniMod-Software-Paket beiliegt. Dieser muss in BASCOM unter Programmer-Options eingestellt werden. Und so programmiert man:
Der USB-Stecker darf keine Verbindung mehr mit dem PC haben, S1 drücken und gedrückt halten, dann den USB-Stecker mit dem PC verbinden. Daraufhin kann mittels F4 (oder während des Kompilierens mit F7) das entsprechende Programm auf den AVR transferiert werden. Nach der Übertragung genügt ein Druck auf S2, der Logiktester deluxe ist einsatzbereit!
[1] TEKO-Gehäuse: http://www.tekogehause.de/de/prodotti/famiglia/AC/serie/29
[2] Digitale Logik-Familien Elektor 11/2003
From the LAB:
Messungen am Panacea am 23-7-2012 (110740, Originaltitel ELWMS)
Firmware Version 1.2.1
TTL 3/5V und CMOS 5V
Bei beiden sind die Pegel von wo low ,open und high angezeigt werden abhängig von der USB Speisespannung (die wird als Referenz für die A/D-Wandlung verwendet: Reference =Avcc).
Frequenzmessung
Von 7 MHz bis 9,0005 MHz wird ‘overflow‘ angezeigt. Ab 9,0005 MHz wird die Frequenz als ‘16 MHz-Eingangsfrequenz‘ angezeigt, also 10 MHz als 6 MHz und 15 MHz als 1 MHz…?
Analog
Auch hier gilt die Genauigkeit der angezeigten Messwert ist abhängig von der USB-Spannung (+/- 10% Toleranz ist normal…).
ImpCnt H
Maximaler Frequenz etwa 20 bis 30 Hz. Erhöhen des Zählers erfolgt nach einen High/Low Übergang.
ImpCnt L
Maximaler Frequenz etwa 20 bis 30 Hz. Erhöhen des Zählers erfolgt nach einen Low/ High Übergang.
Uart-Rx
Beenden mit S1 funktioniert hier nicht!? Da hilft nur den Stecker ziehen und wieder einstecken.
Uart-Tx
Bei der Bedienung ist ein und ausschalten der gesendete Text mit S1 möglich.
1-Wire
Auslesen einer DS1820 ergab bei uns:105E5F15
020800BC
Pulse L
Die Angaben sind nicht genau. Zum Beispiel bei 100 Hz:
Brauchbar von 20 Hz bis etwa 10 kHz.
Pulse H
Das gleiche wie bei Pulse L :
Brauchbar von 20 Hz bis etwa 10 kHz.
Frq.-Gen
Servo-In
Auch hier hat die Anzeige die gleiche Ungenauigkeit wie bei Pulse L und Pulse H.
Ergänzungen/Korrekturen Text Projekt elwms.doc (Version 1.2.1)
Untertitel erwähnt MiniMod18. Es ist jetzt eine neue Schaltung basiert auf…
Wir haben kein bestimmtes Gehäuse vorgesehen. Einbauen kann man nach eigener Einsicht geschehen.
Bei Bedienung ist soll der Text korrigiert werden: es sind jetzt zwei Tasten rechts vom Display geworden.
Bei der Liste des Menus fehlt am Ende Servo-In. Danach folgt wieder TTL 3/5V usw.
Am Ende der Text wird leicht programmieren mit Bootlaoder erwähnt. Welche Programmer gibt es für BASCOM (-AVR). Wenn man den USB-Stecker raus zieht hat die Schaltung keine Speisespannung mehr. Wird die Schaltung über den ISP-Header gespeist?
Selber fand ich das Programmieren des Microcontrollers mit dem Hex-File von Bascom mit AVR Studio und eine Atmel mkII programmer der leichtesten Weg.
Unsere Platine:
Display uns Tasten befinden sich auf der Rückseite. Anschlüsse des Eingangs (Probe und Masse) können am besten auf der Bauteilen-Seite angeschlossen werden.
Das Display haben wir mit SIL-Header und single Sockets mit der Platine verbunden (Bilder). Die Sockets werden in die Anschlüsse vom Display gelötet (an die richtige Seite!) und die 2 Header (mit je 8 Pins, rund) werden in unsere Platine gelötet. Die Anschlüsse dieser Header sind an eine Seite dicker (0,7 mm, die dünnere ist 0,5 mm) und werden an die Platine gelötet. Die dickere passen nämlich nicht in die Sockets. Vorteil dieser Anschlussweise ist das Display ist naher an die Platine zu montieren. Aber es geht auch andersrum oder man kann einfach Drähte löten. JP1 wird liegend platziert. Das spart Platz. Die Befestigung des Displays geschieht mit 4 Stück M2 Schrauben und 12 Muttern.
Die Platine ist nicht für ein spezielles Gehäuse entwickeld worden.
Stromverbrauch ohne Beleuchtung ist 32 mA und eingeschaltet mit JP1 etwa 67 mA. Die Anschlüsse für Probe sind Platinenstecker (printpaaltjes) die horizontal verbiegt werden damit alle Bauteilen ganz flach sind. ISP-Konnektor K2 braucht nicht plaziert zu werden, nur wenn man selber die Firmware ändern möchte.
--
R3, R6 = 10k0, 1%, 125 mW, SMD 0805
R4, R5, R7 = 2k2, 5%, 100 mW, SMD 0805
R8, R9 = 68 Ω, 5%, 100 mW SMD, 0805
R10 = 15 Ω, 5%, 100 mW SMD, 0805
P1 = 10 kΩ, 20%, 250 mW, SMD, (TS53YJ103MR10 Vishay Sfernice)
C7, C8 = 22 pF, 5 %, 50 V, C0G/NP0 SMD 0805
L1 = 10 uH, ILBB0603ER100V Vishay Dale
K1 = mini USB receptacle 5pos, SMD
K2 = header straight 6way (2x3), pitch 2.54 mm
Probe1, Probe2 = Terminal pin, PCB hole 1.3 mm
S1, S2 = Switch PCB SPST-NO, Multimec 3FTL6 + Cap round black 19 mm1S09-19.0
X1 = Crystal, 16 MHz, Cload 18 pF, 5x3.2 mm, SMD ABM3
LCD1 = LCD Module 2x8, led B/L, 58x32 mm, Elektor 120061-75
16 x PCB socket, single, standard, Harwin, H3153F01
2.54mm Pitch Single-In-Line Header (2x8), Harwin D01-9923246
New firmware v1.22:
The UART-RX-mode can now be exited without unplugging the USB cable first.
New firmware v1.23
Improved response to pressing the two buttons.
Discussion (6 comments)