Weitere Infos zur LogicProbe mit PIC
Die Idee zur LogicProbe entstand, als ein alter Logikstift seinen Geist aufgab. Außerdem stand an, sich in die Programmierung von PICs einzuarbeiten. Ein PIC12F629 war gerade zur Hand. Ein PIC12F675 wäre etwas einfacher gewesen, weil ein A/D-Wandler enthält.
- Datenblatt PIC12F629/PIC12F675 https://ww1.microchip.com/downloads/en/DeviceDoc/41190G.pdf
Ziel
- Einfache Hardware
- Kleiner Aufbau in der Größe eines Tastkopfs für ein Oszilloskop
- Verträgt Spannungen bis 24V
Ausrüstung und Geräte
Hardware
- PICkit 3 Debug Express von MICROCHIP http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=dv164131
- PIC-Prommer Eigenbau mit Schwenkhebel-Fassung (besser als das fummelige Testboard, das dem PICkit 3 beiliegt).
- Regelbares Netzgerät mit Strombegrenzung
- Logik-Analysator
- Digital-Voltmeter
- Steckboard
Software
MPLAB X IDE v2.20 für Linux http://www.microchip.com/pagehandler/en-us/family/mplabx/
Die MPLAB X IDE ist die übliche Schicki-Mikki Umgebung.
- Schicker Editor
- Guter Assembler
- PICkit 3 kann unmittelbar zum Programmieren angesprochen werden (ein Klick).
Die Versorgungsspannung wird normalerweise vom PICkit 3 nicht an den Prommer geliefert.
Versorgungsspannung vom PICkit 3 bereitstellen:
- Im linken Feld auf das Projekt mit rechter Maustaste -> Set Configuration -> Customize
- Neuer Dialog. Dort im linken Feld PICkit 3 auswählen.
- Im rechten Feld oben anstelle Memories to Program die Kategorie Power aus wählen.
- Bei Power target circuit from PICkit3 rechts ein Häkchen setzen.
- Der Voltage Level sollte 5.0 sein.
- -> OK
- Der integrierter Simulator ist sehr hilfreich, aber nicht simpel, weil die Eingänge simuliert werden müssen.
Aktivieren über
- Im linken Feld auf das Projekt mit rechter Maustaste -> Set Configuration -> Customize
- Neuer Dialog. Dort im rechten Feld links unten "Simulator" wählen.
- OK
- Starten über Run -> Run Main Project
Zum Design der LogicProbe
Vom PIC12F629 der LogicProbe werden der Komparator und der 16-Bit-Timer für die Messungen verwendet. Der Timer1 dient zur Erkennung von Impulsen. Er ist für 16 MHz geeignet. Der Komparator dient zur Messung des Logikpegels.
Der Eingangspegel und der Zustand des Timers werden periodisch alle 1024µs gemessen und die LEDs entsprechend geschaltet. Die Periode von 1024µs wird über den Timer0 des PIC gesteuert.
Damit die Helligkeit der LEDs nicht zu sehr von der Versorgungsspannung abhängt, wird der Strom durch die LEDs über eine Pulsbreiten-Steuerung eingestellt.
Details
- Näheres kann dem Programm der LogicProbe entnommen werden.
Erkennung von Impulsen
Der Timer1 dient zur Impulserkennung. Er wird unmittelbar über den Eingang GP5/T1CHl angeschlossen. Zählt der Timer1 weiter, liegen Impulse an. Der Eingang ist ein Schmitt-Trigger. Impulse werden damit korrekt erkannt.
Zum Schutz ist der Eingang über den 100 kOhm Widerstand R1 angeschlossen. Dieser wird mit dem kleinen Kondensator C1 überbrückt.
Messung der Eingangsspannung
Die Eingangsspannung wird über den Eingang des GP1/CIN-Komparators gemessen.
Der Komparator wird im Modus "Multiplexed Input with Internal Reference" betrieben:


Der Eingang des Komparators wird über das RC-Glied R4, C2 mit einer Zeitkonstante von 1 ms betrieben. Damit werden eingehende schnelle Impulse gemittelt. Die Spannung sagt etwas über das Tastverhältnis aus.
Es werden vier Pegel der Eingangsspannung Ux gemessen.
Pegel Ux |
CMOS: Ux bei 5V |
CMOS: Ux / Udd |
TTL: Ux |
TTL: Ux / Udd |
Univ.: Ux / Udd |
Univ.: Ux bei 3V |
Beschreibung |
Uhigh | 3,5V | 0,72 | 2,0V | 0,41 | 0,54 | 1,6 | Minimale Spannung für HIGH |
Ulow | 1,5V | 0,32 | 0,8V | 0,17 | 0,16 | 0,63 | Maximale Spannung für HIGH |
Uupper | 0,56 | 0,31 | Spannung für Tastverhältnis HIGH / LOW ~ 3 / 1 | ||||
Ulower | 0,44 | 0,25 | Spannung für Tastverhältnis HIGH / LOW ~ 1 / 3 |
Die Pegel werden einfach durch die interne Referenz vorgegeben und über den Komparator ermittelt, ob die Eingangsspannung darüber oder darunter liegt. Die interne Referenz ist jedoch nicht absolut, sondern wird von der Versorgungsspannung abgeleitet. Das ist für CMOS ideal. Bei TTL muss dagegen die Versorgungsspannung überprüft werden.
Messung des Tastverhältnis
Die Pegel Uupper und Ulower sind die gemittelten Spannungen, wenn Impulse anliegen und ein Maß für das Tastverhältnis. Wenn die Spannung bei Impulsen zwischen Ulower und Uupper liegt, wird ein Tastverhältnis von 1:1 angenommen. Ist die Spannung kleiner als Ulow, liegen nur relativ kurze HIGH-Impulse an. Ist sie über Uhigh, liegen relativ kurze LOW-Impulse an.
Messung der Versorgungsspannung für TTL
Um entscheiden zu können, ob die Versorgungsspannung für TTL geeignet ist, muss die Versorgungsspannung relativ genau gemessen werden. Dafür reicht der interne Referenzspannungsgenerator nicht aus (1/32 ~ 3%). Deshalb wird die Spannung über die Ladezeit eines Kondensators gemessen. Bei 8-Bit werden so ca. 0,5% erreicht.
Die Messung der Versorgungsspannung Udd erfolgt durch den Vergleich mit der Spannung Uled an einer LED. Die Versorgungsspannung wird über einen Vorwiderstand an den Eingang angelegt. Dann steigt die Spannung am RC-Glied langsam an. Die Zeit bis zum Erreichen der Spannung Udd - Uled ist ein Maß für die Eingangsspannung.
Der Komparator wird im Modus "Comparator without Output" betrieben.


Der Widerstand R10 erzeugt einen kleinen Strom durch die grüne LED L3. Da der Ausgang GP0 normalerweise einen Pegel von Udd oder 0V erzeugt, hat R10 keinen Einfluss. Befindet sich GP0 jedoch im Tristate, so liegt an GP0/CIN+ die Spannung Udd - Uled mit Uled ~ 1,8V an. Uled ist sozusagen die Referenzspannung.
Am Eingang GP1/CIN- liegt über den Spannungsteiler R1, R3 etwa 0,5 Udd an. Wird GP5 als Ausgang betrieben und auf HIGH, d.h. auf Udd gelegt, steigt über das RC-Glied R4, C2 die Spannung am Eingang CIN- an. Die Zeit, bis der Eingang CIN- den Wert von CIN+ , d.h. Udd - Uled erreicht, ist ein Maß für die anliegende Versorgungsspannung. Diese Zeit wird per Software durch eine Schleife gemessen, in der der Ausgang des Komparators beobachtet wird. Die Zeitkonstante des RC-Glieds R4, C2 liegt in der Größenordnung von 3ms. Bei einer Zeit von 20µs pro Schleifendurchlauf sind also etwa 150 Messungen zu erwarten. Dieses lässt sich gut mit acht Bits realisieren. Die Messgenauigkeit ist völlig ausreichend.
Da die Spannung an der LED und vor allem der Kondensator C2 hohe Toleranzen aufweisen, ist eine Kalibrierung nötig. Bei bekannter Spannung wird die Zeit gemessen und im EEPROM des PIC gespeichert. Bei späteren Messungen kann darauf zugegriffen werden.
Regelung der Helligkeit der LEDs
Die Helligkeit einer LED hängt vom mittleren Strom durch die LED ab. Die Schaltung legt die Versorgungsspannung einfach über einen Vorwiderstand an die LEDs an. Eine von der Versorgungsspannung unabhängige Helligkeit wird erreicht, indem die LEDs mit Impulsen angesteuert werden, deren Tastverhältnis den Effekt der Versorgungsspannung ausgleicht.
Die Versorgungsspannung wird über das Referenzmodul des PIC mit der Spannung einer LED verglichen. An GP0/CIN+ liegen wie bei der Messung der Versorgungsspannung für TTL Udd - Uled an. CIN- erhält die Spannung vom Referenzmodul des PIC. Die gemessene Spannung wird über einen einfachen Algorithmus in eine Zeit für die Pulsbreiten-Steuerung umgerechnet.
Stromversorgung
Der Spannungsregler LM 2936 Z5.0 ist ein LDO-Spannungsregler, der sich hervorragend für Anwendungen mit frei anschließbarer Stromversorgung geeignet. Der Regler ist gegen Verpolung geschützt und kann bei einer Versorgungsspannung bis zu 30V betrieben werden. Selbstverständlich ist er selbst gegen Überlastung geschützt.
Die LogicProbe benötigt maximal 10 mA. Der Spannungsabfall am Regler beträgt dann ca. 0,15V. Der Regler wird fast immer mit einer Ausgangsspannung betrieben, die unter seiner spezifizierten Ausgangsspannung von 5V liegt. Er dient eigentlich nur als Überspannungs- und Verpolungsschutz.
Stützung der Versorgungsspannung
Der LM2936 benötigt am Ausgang einen Kondensator von 10µF, um Schwingungen zu verhindern. Das mag der PIC aber gar nicht. Wenn alle LEDs aus sind, ist die Schaltung relativ hochohmig und der PIC arbeitet noch unter 2V. Die Zeit bis zum Abschalten des PIC kann einige Sekunden betragen. Kurzes Ein- und Ausschalten der Versorgungsspannung kann dann die LogicProbe ziemlich durcheinander bringen. Bei zu geringer Versorgungsspannung (< 2V) ist in sicherer Betrieb der LogicProbe nicht mehr möglich. Deshalb entlädt der Widerstand R6 die Stützkondensatoren. Bei zu kleiner Versorgungsspannung werden alle LEDs einschaltet und gehen in den Fehlerzustand. Die LogicProbe muss dann kurz von der Versorgungsspannung getrennt werden. Die Versorgungsspannung sollte über 2,5V liegen.
Ergebnisse
- Zur Überprüfung der Eingangspegel werden Spannungen über ein Potentiometer am Eingang vorgegeben.
- Die Eingangspegel werden gut eingehalten.
- Ein 20 MHz Quarzgenerator als Taktgeber wird mit Tastverhältnis von 1:1 angezeigt.
- Andere Tastverhältnisse werden deutlich erkannt.
- Sehr kurze Einzelimpulse von unter 10ns (eine HCMOS-Gatter-Laufzeit) werden angezeigt.
- Eine Unterschreitung der TTL-Versorgungsspannung wird sicher erkannt.
- Wird die LogicProbe mit 3V im Universal-Modus betrieben, dann werden die Pegel und Impulse eines Timers ICL555 bei einer Versorgungsspannung von 1,8V bis 15V korrekt angezeigt.
- Wird die LogicProbe im Universal-Modus mit 5V betrieben, werden Pegel und Impulse eines Timers ICL555 bei einer Versorgungsspannung von 3,3V bis 15V korrekt angezeigt.
Familie | Uv / V | Ulow / V | Uhigh / V | Ucnt / V |
TTL | 5,0 | 0,81 | 2,10 | 2,88 |
CMOS | 5,0 | 1,36 | 3,33 | 2,88 |
CMOS | 3,3 | 0,89 | 2,16 | 1,44 |
Universal | 3,0 | 0,65 | 1,60 | 1,60 |