../../icons/Logo.pngPraktische Elektronik


list.png

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.

1.
Der Komparator kann an einen internen Referenzspannungsgenerator gelegt werden.
2.
Der Timer1 kann laut Spezifikation Taktperioden unter 60ns > 16,7MHz verarbeiten.
3.
Die Eingänge sind CMOS und daher leicht gegen Überspannungen zu schützen.
4.
Die Ausgänge können bei LOW-Pegel bis zu 8 mA liefern und damit LEDs treiben.

Ziel

  • Einfache Hardware
  • Kleiner Aufbau in der Größe eines Tastkopfs für ein Oszilloskop
  • Verträgt Spannungen bis 24V

Versuche

Versuchsaufbau_s.jpg
Bild 1: Versuchsaufbau auf Steckboard

Aufbau von links:

PIC mit R, C und LEDs, Spannungsregler LM2936, Taster der LogicProbe, Taster für LOW und HIGH, Poti zum Testen der Eingangsspannung, Glitch-Generator, Taktgenerator mit 555, Quarzgenerator

Ausrüstung und Geräte

Hardware

  • 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:

Multiplex_Input_with_Internal_Reference.png
Bild 2: Multiplexed Input with Internal Reference
LogicProbePIC_Eingang.png
Bild 3: Schaltungsausschnitt zur Messung der Eingangsspannung und der Impulse am Eingang

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 Mass 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.

Comparator_without_Output.png
Bild 4: Comparator without Output


LogicProbePIC_Spannung.png
Bild 5: Schaltungsausschnitt zur Messung der Versorgungsspannung

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 Bit 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 Pulsbreitensteuerung 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 Einzel-Impulse 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