TV VIDEO BILD BAS Frequenzzähler DVM Atmega8 Assembler

#413225
Lesenswert?

Geschätztes Forum,

ein 16 MHz getakteter Atmega8 erzeugt ein s/w Videosignal
(BAS-Signal, kein FBAS) und mit wenigen Bauelementen kann man sich
relativ kostengünstig und zeitsparend ein kleines Messhilfsmittel
schaffen.

Grundidee war, dass mehrere Temperatur-Werte auf dem TV-Bildschirm
darstellen werden sollten,
dass es dann so ausartete hatte ich anfangs nicht gedacht ;)

*Features*:
- 5 MHz Frequenzzähler (ohne Vorteiler, mit Vorteiler bis 40MHz)
- 4 Kanal _ADC_(variaber Offset, Multiplikator, Kommastelle,
Maßeinheit)
- Anzeige RXD-Daten ( Baudrate einstellbar, Zahlen positiv/negativ)
- interne Uhr
- 4 Tasten Menueführung
- 4 x 14 Zeichen-Darstellung
- Einstellungen werden im internen EEPROM abgelegt
- mehrere Hilfe-Menues

MENUE-EINSTELLUNGEN (EEPROM):
- die gemessenen ADC-Werte können mit einem Multiplikator (0,5...10),
  sowie mit einem Offsetwert beaufschlagt und eine Maßeinheit kann
  festgelegt werden, incl. Kommaposition
  (Anpassung an Temperatursensoren bzw. Spannungsteiler)
- die ADC-Referenzquelle ist umschaltbar (intern 5V, 2,56 bzw. extern)
- Die Zeitdauer für Frequenzmessung ist variabel (1...8s)
  ( bei Vorteiler 2:1 empfielt sich eine Zeit von 2s)
- Die Baudrate kann eingestellt werden (1200,2400,4800,9600,19200)
- ein Zurücksetzen auf die "Werkseinstellungen" ist möglich
- Testbilder
- Fehlercodes

Besonderheiten:

Normalerweise besteht ein TV-Bild aus 2 x 312,5 Zeilen = 625 Zeilen.
Versuche haben aber gezeigt, das ein TV auch mit 2 x 312 Zeilen = 624
Zeilen zurechtkommt.

Dafür mussten aber, abweichend von der TV-Norm, einige Vereinfachungen
vorgenommen werden. Die vordere Schwarzschulter und die hintere
Schwarzschulter werden nicht exakt generiert.

Das Programm wurde in Assembler geschrieben, da es teilweise auf jeden
einzelnen Takt ankommt, damit die V/H Synchronimpulse und die
Bild-Daten ohne jittern bereitgestellt werden.

Hoffentlich habe ich den Programmcode ausreichend dokumentiert, damit
man nachvollziehen kann, wann wo und wie etwas passiert.

Ich werde "Step by Step" dieses Projekt weiter entwickeln und Updates
zur Verfügung stellen.

Besonders freuen würde ich mich über
Hinweise und Verbesserungsvorschläge.


Einen schönen Gruß,

direkt aus Erfurt

Bernhard

Angefügt habe ich:
- Schaltplan (mit SPLAN 4.0 gezeichnet)
- ASM-Files
- HEX-Files
- Fuse Bits
- 2 Bilder
- etwas Theorie (einfach beschrieben)



Anmerkung:

Ein kleiner Bug treibt noch sein Unwesen. Manchmal entsteht in einer
Textzeile ein Zeichen, was da nicht hingehört. Ich vermute, dass es was
mit dem Z-Register zu tun hat.
Angehängte Dateien:
Gast #413226
Lesenswert?

Deine Beschreibung macht neugierig .. gleich mal geladen!

Boah Ahey - super - klasse Spitze - Super !!!!!!!!!!!!

Wieviel ist denn die kleinste Frequenz die gemessen werden kann, was
die höchste? Und könnte man das auch in einen LCD-Mini-TV mit gelber
Eingangsbuchse einspeisen? Schade, hab keinen TV, sonst würd ichs
sofort nachbauen :-)

Super Publikation !!!

Viel Erfolg weiterhin,
Vajk
#413227
Lesenswert?

Hallo Vajk,


>Boah Ahey - super - klasse Spitze - Super !!!!!!!!!!!!

danke


>Wieviel ist denn die kleinste Frequenz die gemessen werden kann, was
>die höchste?

Frequenzbereich: ca. 1Hz...  40MHz (mit  Vorteiler)
                 ca. 1Hz....5,5MHz (ohne Vorteiler)

>Und könnte man das auch in einen LCD-Mini-TV mit gelber
>Eingangsbuchse einspeisen?

ja, das funktioniert

Bernhard
#413229
Lesenswert?

Hallo ajax,

>Ein Oszi draus machen wäre doch schön.

Stimmt! Aber es gibt ein Problem.

Die Oszi-Daten, also die gemessenen Analogwerte,
müssen TV gerecht aufbereitet werden (Bildspeicher) und

in kürzester Zeit (wenige ns) abgerufen und gesendet werden.

Da bleibt bei 16Mhz Takt keine Zeit mehr zum rechnen :(

Leider haben die ATmega's nur relativ wenig SRAM, so dass die Grafik

nur ca. 80x80 Pixel (ATmega8) sein würde.

Wäre etwas grob, würde aber für eine Temperaturdarstellung vollkommen
genügen.

Bernhard
Gast #413230
Lesenswert?

# nur ca. 80x80 Pixel (ATmega8) sein würde.

Man könnte die Sache anders angehen. Der Atmega8 hat 1KSRAM.
Davon 200 Byte verwenden um ein gesampeltes Signal abzuspeichern.

Das Signal soll senkrecht auf dem Bildschirm ( also auf deutsch: von
oben nach unten ) dargestellt werden.

Jeder Zeile wird ein Signalwert aus dem Array zugeordnet.
Immer am Zeilenanfang wird ein Timer mit dem Signalwert gestartet. Wenn
der Timer abgelaufen ist wird ein Punkt auf den Bildschirm gezeichnet.

Die Bildauflösung, mit der das Signal dargestellt wird, beträgt also
200Zeilen x 256 Spalten. Ganz schön viel, oder ?

Gruss,
ajax
Gast #413234
Lesenswert?

Hallo

kann sein dass ich jetzt totalen mis schreibe -> ind diesem Fall
einfach ignorieren,
aber wäre es nicht möglich das Videosignal mit nur einem Pin zu
generieren?
Dann würde es ja theoretisch gehen an einen Port ein 8 Bit
Schieberegister anzuschließen und immer 8 Bits gleichzeitig zu laden.
Der Schieberegister wird dann über einen Externen Takt gesteuert. So
würde nur ein Achtel der jetztigen Zeit für den Bildaufbau verbraucht.
Falls der zweite R für die Syc verwendet wird könnte er ja an jedem
Zeilenende durch den uC aktiviert werden.
Gast #413235
Lesenswert?

Hallo Bernhard,
Dank für die Info,aber was passiert dann Intern, wenn ich Dein TV-Meter
am Receiver-Terr.Eingang anschliesse.Bei Sat entsteht ein
brauchbares Videosignal.Hab ich schon hundertmal zum Testen
einer "Schüssel" gemacht.Müsste ich bei Terr.nicht ein Kanal
einstellen?Oder wird das Videosignal auch durchgereicht.Und wenn
ich ein Sat-Kanal empfange,werden dann die Messergebnisse auch ein-
geblendet?Ich hoffe ich Nerve nicht zu stark.

Aber was Du nicht verstehst wird selten gelingen.
#413237
Lesenswert?

>aber wäre es nicht möglich das Videosignal mit nur einem Pin zu
>generieren?

Ja/Nein

Ein Fernseh - BAS - Signal besteht mindestens aus 3 Pegeln.
(0V für Synchron 0,3V für Schwarz und 0,3...1V für Weiss)


>Dann würde es ja theoretisch gehen an einen Port ein 8 Bit
>Schieberegister anzuschließen und immer 8 Bits gleichzeitig zu laden.
>Der Schieberegister wird dann über einen Externen Takt gesteuert

Ja, das würde funktionieren.

Der µC (ATmega8) besitzt intern ein solches Schieberegister,
genannt SPI, wäre also ohne Hardware-Aufwand sofort realisierbar.
Gast #413239
Lesenswert?

@????
Ja, wir ignorieren dich...
Nein, kleiner Scherz.
Das ganze geht sogar einfacher, denn der AVR bietet dieses
Schieberegister intern:
http://www.mikrocontroller.net/forum/read-4-429298.html#new

@Picht
Mit einem Modulator aus einem alten Sat Reciever, Videorekorder usw.
funktioniert das wunderbar, das mache ich auch auch so um Infos in
unser hausinternes TV Netz einzuspeisen: Ein AVR bekommt den Text, der
erzeugt das Videosignal und ein Modulator speist dieses ein.
Gast #413240
Lesenswert?

Hallo Benedikt+Bernhard,
Tolle Sache.Es gibt doch immer eine Lösung.
Also,ich nehme das Bas Signal gehe auf den AVR mit Schieberegister
und speise mit einen Modulator das Signal Terristisch ein.
Ich könnte zB.die LNB Spannung auf den Bilschirm einblenden?
Noch ne Frage:
Im Elektor war ein DiSEqC-Monitor mit Pic 16F628 mit LCD Ausgabe.
In ASM. Da ich nur Bascom kann frage ich einfach mal wie ich die
Ausgabe in mein Projekt rein kriege.Oder hat jemand in Zukunft
mit AVR etwas ähnliches vor.Das TV-Projekt bietet sich dafür an.
Kann bei Interesse die orginal Zip-Datei reinladen.
Gast #413246
Lesenswert?

Hallo Bernhard,
ich hab mal ein bisschen die Grundlagen erlesen und bin für
mein Projekt zu folgenden Schluss gekommen.
Man nehme ein Digitalreceiver ein Scartadpter(hat 3Buchsen ,ua.
ich sag mal Gelb,Bas-Signal)und ein LCD-Monitor(hat gelben
Chinch-Stecker).Den Stecker schalte ich auf Dein Controllerausgang
um,und habe die Werte auf den Bildschirm oder ein Sat-Bild.
Sind meine Gedankengänge bis hier her OK?
Spannungseingang brauche ich für LNB-Spannung ,is wohl OK.
Jetzt wollte ich mit den Frequenzzähler das DiseqC-Signal
messen.Die 22 Khz die sind aber gepulst.Es müsste also die
Torzeit in mind.in msec Bereich eingeengt werden.Geht das und was
passiert.
Und wenn ich auf die RS232 Schittstelle "dudeldei"sende(alle
sec),wird
dann der Bildschirm voll geschrieben,rollt der Text oder wird immer
auf die selbe Stelle geschieben.
#413247
Lesenswert?

@Wigbert


>Den Stecker schalte ich auf Dein Controllerausgang
>um,und habe die Werte auf den Bildschirm oder ein Sat-Bild.

Nein, Du siegst dann das Bild des µC (UHR, ADC, Frequenz und RXD)

>Sind meine Gedankengänge bis hier her OK?

Müsste funktionieren

>Die 22 Khz die sind aber gepulst

Der Frequenzzähler misst in dieser Beschaltung aber nur die Impulse,
die in einer Sekunde Empfangen werden.

Sollten nur 10 Impulse von den 22kHz in einer Sekunde emfangen werden,
dann Zeigt er Dir die Zahl 10 an.

>Und wenn ich auf die RS232 Schittstelle "dudeldei"sende(alle
>sec),wird dann der Bildschirm voll geschrieben

Durch RS232 kann Dir nur ein Zahlenwert in der 2.Textzeile dargestellt
werden,

Bsp: "1.426"  für die Füllstansmenge eines Oeltanks

Gruß

Bernhard
Gast #545375
Lesenswert?

Hallo,

eigentlich war ich ja nur beim Aufräumen...
Dabei fiel mir aber dieses Türkamera-Videomodul in die Hände und ich 
mußte es unbedingt mal schnell ansteuern.

Naja, nun weiß ich zumindest, daß
 a) der Videomonitor geht und
 b) das dieses Projekt hier sich auf Anhieb richtig meldet.

Nur eine wirkliche Verwendung fällt mir nicht so recht ein im Moment... 
;)))

Gruß aus Berlin
Michael
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren