Archiv verlassen und diese Seite im Standarddesign anzeigen : A/D-Wandler
Import-Script
11.02.2004, 19:13
Hallo, <BR>ich soll ein System entwickeln, das Messwerte mithilfe eines PCs aufzeichnen kann. Einfache Steuerungsaufgaben soll es auch erfüllen können. Als Basis habe ich mir den IO-Warrior von Code Mercenaries ausgesucht. Damit habe ich dann 32 IO-Ports zur Verfügung. Jetzt hätte ich aber gerne eine Spannung gemessen, ein AD-Wandler muss also her. Ich habe da den Tipp bekommen, einen Spannung->Frequenzwandler zu benutzten. Das gefällt mir nicht, da müsste ich ja die Frequenz auch noch zählen. Das ist mir über USB zu ungenau. Was könnte man denn stattdessen an AD-Wandlern nehmen? Es fallen kleine Spannungen bis max. 2 Volt an. Strom wird nicht viel fließen (µA). <BR>Vielen Dank
Import-Script
11.02.2004, 19:21
Wenn dir der ADC0803 oder ADC0804 reicht? Der löst 8 Bit auf und ist für "fast" jede Meßaufgabe schnell genug. Ich schicke dir mal das Datenblatt als Mail. <BR> <BR>Gruß Gerd
Import-Script
11.02.2004, 19:29
Axel, <BR> <BR>genuegen dir 8bit aufloesung oder brauchst du eine <BR>superfeine messung mit 12bit....also 2volt geteilt <BR>durch etwas mehr als 4000 ? <BR> <BR>8 bit TLC549 <BR>12 bit LTC1285 <BR> <BR>Google auch nach Datenblaettern,denn die brauchst <BR>du unbedingt. <BR> <BR>Ed.<img src="http://progshop.com/elektronik/diskussion/clipart/happy.gif" border=0>
Import-Script
11.02.2004, 22:55
sehr schön und preiswert: TLC4835, 8Kanal, 14bit.
Import-Script
12.02.2004, 07:08
Jeder PC hat Analogeingänge -> am Joystickport <BR>
Import-Script
12.02.2004, 13:11
Hi, <BR> <BR>der Joystickport ist kein richtiger Analogeingang. <BR>Der Joystick hat Potis drinn, die Kondensatoren im PC aufladen. Der PC misst einfach nur die Zeit, bis die Kondensatoren eine bestimmte Spannung aufgebaut haben und daraus wird dannd er Widerstandswert/Potistellung berechnet. Dann wird der Kondensator entladen und das Spielchen beginnt von neuem. <BR> <BR>Hängt man da eine Spannung drann, so werden die Kondensatoren brutal auf den SPannungswert geladen und der Joyeingang triggert je nach Spannung sofort oder nie. Auf diese Weise kann man keine analogen Spannungen messen. <BR> <BR>Andererseits kann man so die I/O Karte nutzen. Ein Ausgang schaltet einen Transistor, der einen Kondensator entlädt. Ist er leer, so wird der Transistor abgeschaltet und der Kondensator wird über einen Widerstand geladen. Ein komparator vergleicht dann die Kondensatorspannung mit der zu messenden Spannung. Ist der Kondensator so weit aufgeladen, dass er die gleiche Spannung hat wie die zu messende Spannung, kippt der Komparator und bedient einen Eingang. Misst man die Zeit, so kann der PC dann ausrechnen, wie hoch die Kondensatorspannung und somit die zu messende Spannung ist. <BR> <BR>Anderer Weg ist, mehrere Ausgangsleitungen 8 oder wie genau man halt messen möchte, an eine Widerstandskette anzuschließen und so einen D/A-Wandler aufbauen. Das Analoge Signal vom PC wird dann ebenfalls mit der zu messenden Spannung verglichen. Ist sie höher oder gleich kippt der Komparator, und der PC weiss, dass seine "geratene" Spannung zu gross oder gleich ist. <BR>Entweder erhöht der PC langsam seine "Ratespannung" und wenn der Komparator schaltet ist die Spannung gleich der zu messenden Spannung, oder man beschleunigt das, in dem man sich der Spannung nähert. <BR>Das funktioniert dann wie das klassische Zahlenratespiel. <BR>Halbe Spannung einstellen, gucken ob zu gross oder zu klein. Ist sie beispielsweise zu klein, nimmt man die Mitte zwischen der Hälfte und dem Maxwert, also hier 75%. Ist sie jetzt zu gross, wissen wir, dass sie zwischen 50% undf 75% liegen muss. Also wieder die Mitte dazwischen nehmen und gucken... usw. <BR> <BR>Gruß <BR>Elmar
Import-Script
12.02.2004, 13:59
16 Bit wären schon sehr schön, da wir zum Teil Unterschiede von 0.001 Volt messen möchten. Mehr hat ein Multimeter auch nicht. Ich nehme an, ich muss mit entsprechenden Transistoren noch die zu messende Spannung in den Messbereich des A/D-Wandlers skalieren?
Import-Script
12.02.2004, 14:06
Hi, <BR> <BR>bei so einer genauigkeit darf man nur hochwertige teile verwenden. Auch hat jeder A/D-Wandler eine gewisse Ungenauigkeit. <BR> <BR>Bei einem Multimeter steht z.B. +/-5% +/- 1 Digit drauf. Das heißt, dass der Wert um 5% abweichen kann und die letzte Stelle der Anzeige um eins daneben liegen kann. <BR> <BR>Um den Messwert passend zum A/D zu skalieren nimmt man am besten OPVs. Da gibt es unzählige Schaltungen, für jeden Einsatzzweck. Am einfachsten ist ein Nichtinvertierender Verstärker mit passendem Verstärkungsfaktor. Informier dich hier bei Batronix unter Know-How Diverses, da gibt es Infos zu Operationsverstärkern. <BR> <BR>Gruß <BR>Elmar
Import-Script
12.02.2004, 14:44
da hat Elmar Recht. Bei einem mV bewegst du dich langsam in die Bereiche der Offsetspannungen hinein. Desweiteren wird der mech. Aufbau kritisch, weil deine Meßschaltung EMV dicht werden sollte. Jedes normale Handy ist in der Lage an PN - Übergängen mV zu erzeugen. Bei mir schräg rüber steht so ein Umsetzer und seid dem das Ding strahlt schwankt sogar mein ALDI Billigstmultumeter ständig um den Nullpunkt herum. Mache ich die Meßstrippen ab, is Ruhe im Karton. Soviel zum Thema EMV und mV messen. <BR> <BR>Gruß Gerd H <BR> <BR><img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0>
Import-Script
12.02.2004, 16:06
Ich von dem Mensch, der diesen USB-Controller herstellt, den Tipp bekommen, dieses Teil zu verwenden: <BR><a href="http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1890/ln/de" target=_top>http://www.maxim-ic.com/quick_view2.cfm/qv_pk/1890/ln/de</a> <BR>Jetzt wundere ich mich ein bißchen über dieses 2-Leitungen-Interface. <BR> <BR>Die von euch angesprochenen Chips haben, soweit ich das sehe, andere Interfaces. Ich hab noch nicht mit A/D-Wandlern gearbeitet, dachte aber, dass das Interface für einen 8-Bit-Wandler 8 Beinchen am Chip sind, wo einfach die Bits rauskommen. Dem ist wohl nicht so. Wie kommt man aber dann an die Werte? Erstaunlich finde ich, das Google gar nichts zum TLC4835 finden mag: <BR><a href="http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=TLC4835&btnG=Google%2BSuche&meta=" target=_top>http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=TLC4835&btnG=Google+Suche&meta=</a> <BR>
Import-Script
12.02.2004, 16:55
@Axel <BR>der ADC0803 ist so ein AD- Wandler mit 8 Beinchen wie du sagst, zD. einer der den Wert paralell ausgibt und dadurch in der Wandlungsrate sehr schnell. Hatter aber eben auch 20 Beinchen drann. Viele der höher auflösenden Wandler geben den Wert seriell oder gemultiplext aus. Die sind also ne Weile mit Ausgabe beschäftigt haben dafür weniger Anschlüsse. Ein 14 Bit Paralellwandler bräuchte auch nen Puffer, weil Rechner 8Bit erfassen könne. Da is seriell einfacher, aber langsamer zu verarbeiten. Du solltest also überlegen, wie hoch die Auflösung werden soll und wie schnell das ganze gehen muß. Danach entscheidet es sich welcher Wandlertyp zum Einsatz kommen könnte. <BR> <BR>Gruß Gerd H
Import-Script
12.02.2004, 17:01
Es muss gar nicht besonders schnell gehen: Ich muss höchstens alle 10-20 Sek. einen Messwert auslesen. Eher jede Stunde ein Dreierpäckchen mit jeweils 10 Sek Abstand zwischen den Messwerten. Ich stelle mir halt die Frage, wie ich einen seriellen A/D-Wandler mit IO-Pins auslesen soll, die höchstens 150 mal pro Sekunde abgefragt werden können. Das erscheint mir etwas wenig dafür.
Import-Script
12.02.2004, 17:21
serielle Wandler sind ja auch eher für Langzeitmessungen gedacht. Durch ihr Wandlerpriziep (sux. Approximation) sind sie eh nicht besonders schnell, haben aber bei geringem Aufwand ne recht hohe Auflösung und man kann sie gut in abgesetzten Systemen einbauen. Parallwandler arbeiten bis in den MHz Bereich. Da die aber mit integrierten R2R Ketten arbeiten und ne Menge Komparatoren enthalten sind sie auch entsprechend teurer. In nem Digivolt ist so ein Teil also nicht drin, so schnell kann ja keiner gucken, :-) und LCD eh langsam. <BR>Bei Langzeitmessungen reichen doch oft 10 Messungen p/s aus. Bei 4MHz und das über 10 Stunden, da kannst an die Meßstelle eh gleich nen PC mit viel Festplatte stellen. <BR> <BR>Gerd H
Import-Script
12.02.2004, 18:10
Die effektive Auflösung (da, wo's noch genau ist) der ADCs ist meistens 1 bis 2 Bitstellen geringer als die angegebene Auflösung. Hier gilt aufmerksames Studium der Hersteller Datenblätter. Bei hohen Auflösungen können 'Kleinigkeiten' die Schaltung versauen und unstabile Messungen hervorrufen. Spannungsversorgung, Layout, Eigangsverstärker etc. Selbst ein Billigmultimeter von mir mit dem 7106/7107 hat Abschirmfolie im Gehäuse, damit es stabil arbeitet. Da sind Überraschungen vorprogrammiert, aber nur Mut! <BR> <BR>Wenn es um Messungen im Sekundentakt geht, sind Parallel-Wandler unsinnig. Schau dich nach langsamen ADCs mit suksessiver Approximation oder Dual-Slope-Verfahren um, die haben höhere Auflösungen bei niedrigen Kosten. Z.B. der ICL 7135 gibt seine Werte BCD-codiert gemultiplexed aus. Interface-Anbindungen sind im Datenblatt berschrieben. Das Teil kostet rund 3 Euro bei Reichelt. <BR> <BR>@Gerd H. <BR>Wegen EMV. Bei der nächesten Wohnraumrenovierung ne Tapete mit Kupfergeflecht aufbringen <img src="http://progshop.com/elektronik/diskussion/clipart/lol.gif" border=0> (gibt's wirklich, aber schweineteuer). <BR>PS: Hast Du eigentlich meine Beschreibung im Layout-Thread gelesen, man hört ja so wenig. <BR> <BR>Gruß Gerd
Import-Script
12.02.2004, 18:10
Ich stelle auch einen PC mit viel Festplatte daneben. Nur will ich die ganze Mess- und Steuertechnik in einer Kiste unterbringen und mit einer Software ansteuern. Die Software wird nicht das Problem, nur weil ich eher aus der Informatik komme, hab ich noch nicht das Elektronikwissen.
Import-Script
12.02.2004, 18:29
Hi, <BR> <BR>diese seriellen A/Ds kann man wunderbar am Druckerport anschließen und ann über die Druckerportregister bedienen. Die beiden Ausgabeleitungen sind eine synchrone serielle Übertragung. Als Informatiker müsstest Du jetzt was damit anfangen können <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-)" BORDER=0> Zufälligerweise hat der PC-Druckerport 4 Bidirektionale Leitungen, also passend für drei Sensoren (Clock braucht man ja nur einmal). Der Erweiterte Druckerport (Für LWs, Scanner,... ECP/EPP) hat sogar 12 Leitungen! <BR>Die eine Leitung macht Clock, die andere Überträgt Daten. Viele dieser zweidrahtanschlüsse arbeiten auch nach dem I²C - Prinzip. Dann kannst Du beliebig viele parallelhängen. <BR>Auch ein Monitor spricht so mit der Grafikkarte. Mit Know-How kann man so einen Sensor auch an die VGA-Buchse des PCs anschließen <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-)" BORDER=0> <BR>Aber lieber beim Druckerport bleiben. <BR>Mit geschickter Ansteuerung kann man bei dem Druckerport mindestens 100.000 Bits pro sekunde übertragen. Macht dann weit mehr als 1000 Messungen pro Sekunde, wenn der A/D mitmachen würde... <BR> <BR>Gruß <BR>Elmar
Import-Script
12.02.2004, 18:30
@Gerd, <BR>klar habe ich die gelesen und deine Bilder bewundert. Deine Idee mit den Alurahmen ist eindeutig gut. Man nimmt ja an, das die Bildergläser stimmig sind. Genau so werde ich mir das auch bauen, da hört das hinlegen und alte Festplattengewichte drauflegen auf. :-). Mal sehen, ob ich auf die Ecken noch Henkel klebe, zum einfacheren rein und raus. Wenn fertig, dann Bild. :-) :-) <BR> <BR>@Axel <BR>nun frisch drauflos und nen Seriellen AD getestet. Informatiker mit Lötkenntnissen sind die Zukunft meiner Rente, lach. <BR> <BR>Gruß Gerd H
Import-Script
12.02.2004, 18:36
TLC3548: <BR><a href="http://focus.ti.com/docs/prod/folders/print/tlc3548.html" target=_top>http://focus.ti.com/docs/prod/folders/print/tlc3548.html</a>
Import-Script
12.02.2004, 19:11
Das mit dem Parallelport wird nicht gehen, da wir hier die ganze Entwicklung mit Macs machen wollen und die haben nur USB. Außerdem bekomme ich den IO-Warrior hoffentlich morgen schon geschickt. Es sieht ja auch viel eleganter aus, wenn man an einen kleinen Mac ein transparentes USB-Kabel macht, anstatt so einem dicken Parallelkabel. Dann soll das ganze noch in eine schöne Plexiglasschachtel mit ein paar bunten, blinkenden LEDs *träum*.
Import-Script
12.02.2004, 20:13
Hi, <BR> <BR>naja, den A/D kannst Du auch an zwei I/O hängen... <BR> <BR>Gruß <BR>Elmar
Import-Script
12.02.2004, 20:54
Nochmal weitere Alternativen leicht beschaffbarer hochauflösender ADCs. <BR> <BR>Der Max 132 ist ein 18-Bit ADC mit seriellem Ausgang (4-Draht). Er arbeitet mit +- 512 mV am Eingang (2 µV Auflösung für das LSB). Bei Reichelt für ca. 18 Euro zu haben. <BR> <BR>Der LTC 1290 ist ein serieller ADC mit 12-Bit und etwas preiswerter (bei Reichelt rund 14 Euro). Damit schafft man noch um die 1 mV bei 5V Auflösung. <BR> <BR>Gleiche Auflösung nur noch etwas preiswerter (Reichelt) ist der LTC 1286 (ed hatte ja den LTC 1285 bereits genannt.) <BR> <BR>@Gerd H. <BR>Henkel sind eigentlich unnötig. Druck vom unten auf das Glas reicht. Die Profile gibt's bei Obi. Der Vierkant-Alu hat 7.5 mm Stärke mit Nut (gut für's zentrierte Bohren). Die Winkel sind 14x10x1.5 mm. Die Scheiben werden nur von den Winkelschienen gehalten. Fröhliches Schaffen! <img src="http://progshop.com/elektronik/diskussion/clipart/wink.gif" border=0> <BR> <BR>Gruß Gerd
Import-Script
13.02.2004, 14:40
Den IO-Warrior hab ich grad geschickt bekommen. Wenn ich jetzt einen AD-Wandler mit serieller Schnitstelle an so etwas betreiben möchte, wie läuft denn da die Ansteuerung ab? Da müsste ich doch von PC-Seite aus irgendwie einen Takt vorgeben, nach dem dann die Bits gesendet werden. Da stellt sich mir nur noch die Frage, wie das syncronisiert wird, also woher ich weis, wann ein Byte anfängt.
Import-Script
13.02.2004, 15:19
Axel, <BR> <BR>ganz ruhig das handbuch durchlesen.... <BR> <BR>da findest du unter SPECIAL MODE FUNCTIONS <BR>so etwas wie: <BR> <BR>IIC '2 draht' <BR>SPI '3 oder mehr draht'(A/D Wandler) <BR> <BR>du kannst sogar ein local LCD ansteuern <BR>mit IR experimentieren <BR> <BR>ciao <BR>ed.<img src="http://progshop.com/elektronik/diskussion/messages/10731/11200.gif" alt="">
Import-Script
13.02.2004, 16:17
IIC '2 draht' <BR>SPI '3 oder mehr draht'(A/D Wandler) <BR> <BR>Die beiden hab ich schon in einem der Datenblätter gesehen. Nur was stelle ich jetzt mit denen an? Der eine wird der Taktgeber sein, der andere die Signalleitung. Aber wie jetzt weiter?
Import-Script
13.02.2004, 16:44
Hi, <BR> <BR>hast du den IO-Warrior ohne Dokumentation bekommen? kann ich mir nicht vorstellen. <BR> <BR><img src="http://progshop.com/elektronik/diskussion/messages/10731/11206.gif" alt="">
Import-Script
13.02.2004, 16:55
Da ist nicht viel an Dokumentation dabei, aber die braucht es auch nicht. Unter Mac geht das entwickeln wohl auch recht einfach: <BR>int IOWarriorWriteInterface0 (void *inData); <BR>um 32 Bit zu schreiben und das gleiche gibt es dann nochmal für lesen. <BR> <BR>Unter Linux ähnlich, nur da geht es mit Filedeskriptoren. <BR> <BR>Ich hab das Teil noch nicht aufgebaut, da komme ich erst morgen zu. Da sind dann auch LEDs drauf, mit denen man schonmal ein bißchen spielen kann.
Import-Script
13.02.2004, 17:14
SDK ! <BR> <BR>installiert?
Import-Script
13.02.2004, 17:43
Hätte da auch noch was geckiges mit einem 12 Bit Wandler, den ich auf 8Bit gestutzt habe. <BR>Geckig deswegen, weil ich ihn mit der Baudrate clocke, er dann seine Bits rausschiebt, incl. Startbit und ich ihn nach dem 8.Bit, also bei 9 abwürge, also die Daten disable, und sein 10,11tes liefern die Stoppbits und sein 12. das Parity. Danach ist dann mal Pause und es geht von vorne los, d.h. der blubbert immer so vor sich hin. P.S. Die Schaltung sieht wüster aus als sie ist, zum Einen wegen der galvanischen Trennerei und weil ich einen freischwingenden Oszillator drin habe; das war ganz praktisch um die Baudrate abgleichen zu können, und ausserdem auf die Schnelle ohne grossen Aufwand aus der Bastelkiste zu machen. Eins noch, die Bits kommen falschrum rausgetickert, man muss sie also der Wertigkeit nach umsortieren - siehe Basic Progrämmchen <BR>P.S. der hat auch keinen Stress mit Macintoshs...<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR>(QB4.0) <BR><img src="http://progshop.com/elektronik/diskussion/messages/10731/11211.jpg" alt="Probeaufbau"> <BR> <BR><!--attachment: adcv24-2-11212.pdf*mime_pdf.gif*application/pdf*218.1*Schaltplan+%26%2340%3bEagle%26%2341%3b*a dcv24%2d2%2epdf --><center><table border=1><tr><td><img src="http://progshop.com/elektronik/diskussion/icons/mime_pdf.gif" align=left alt="application/pdf">Schaltplan (Eagle)<br><a href="http://progshop.com/elektronik/diskussion/messages/10731/adcv24-2-11212.pdf" target="_blank"><b>adcv24-2.pdf</b></a> (218.1 k)</td></tr></table></center><!--/attachment--> <BR> <BR><!--attachment: V24adc-11213.unk*attachment_icon.gif*application/octet-stream*2.5*Basicprogramm+QB40*V24adc%2ebas --><center><table border=1><tr><td><img src="http://progshop.com/elektronik/diskussion/icons/attachment_icon.gif" align=left alt="application/octet-stream">Basicprogramm QB40<br><a href="http://progshop.com/elektronik/diskussion/messages/10731/V24adc-11213.unk" target="_blank"><b>V24adc.bas</b></a> (2.5 k)</td></tr></table></center><!--/attachment-->
Import-Script
13.02.2004, 17:59
Die PDF zum Wandler musste ich in zwei Häppchen teilen...(selbst gezippt war sie noch > 250kB) <BR>Aber ein interessanter Wandler ist´s.<img src="http://progshop.com/elektronik/diskussion/clipart/smile.gif" border=0> <BR> <BR><!--attachment: LTC1286_12Bit_ADC_Teil_1-11219.pdf*mime_pdf.gif*application/pdf*201.5*LTC1286+Teil+1*LTC1286+12Bit+ADC+Teil+1% 2epdf --><center><table border=1><tr><td><img src="http://progshop.com/elektronik/diskussion/icons/mime_pdf.gif" align=left alt="application/pdf">LTC1286 Teil 1<br><a href="http://progshop.com/elektronik/diskussion/messages/10731/LTC1286_12Bit_ADC_Teil_1-11219.pdf" target="_blank"><b>LTC1286 12Bit ADC Teil 1.pdf</b></a> (201.5 k)</td></tr></table></center><!--/attachment--> <BR> <BR><!--attachment: LTC1286_12Bit_ADC_Teil_2-11220.pdf*mime_pdf.gif*application/pdf*187.7*LTC1286+Teil+2*LTC1286+12Bit+ADC+Teil+2% 2epdf --><center><table border=1><tr><td><img src="http://progshop.com/elektronik/diskussion/icons/mime_pdf.gif" align=left alt="application/pdf">LTC1286 Teil 2<br><a href="http://progshop.com/elektronik/diskussion/messages/10731/LTC1286_12Bit_ADC_Teil_2-11220.pdf" target="_blank"><b>LTC1286 12Bit ADC Teil 2.pdf</b></a> (187.7 k)</td></tr></table></center><!--/attachment-->
Import-Script
13.02.2004, 18:39
Ja, SDK ist installiert. Hab mir auch grad ein USB-Kabel geholt. Nächste Woche hole ich mir noch ein beleuchtetes Kabel zu Showzwecken. Jetzt muss ich erstmal die Sache mit dem AD-Wandler verstehen. Mein Problem ist nach wie vor, das ich nicht weis, wie ich die seriellen Daten in den USB schieben kann. Da steht nämlich was meiner Meinung nach häßliches in der FAQ zu dem IO-Warrior: <BR> <BR>F: Welche Datenrate kann ich mit dem IO-Warrior erzielen? <BR>A: Als HID Klasse Gerät in der sogenannten Low Speed Kategorie kann der IO-Warrior maximal 100 Reports pro Sekunde übertragen. Auf den meisten Betriebssystemen sind es real 125 Reports pro Sekunde. Ein Report enthält jeweils den Status aller 32 Pins, oder ein Datenpaket von oder zu einer der Spezialfunktionen (IIC, SPI, LCD). Bei Verwendung z.B. der IIC Funktion ergeben sich daraus etwa 600-800 Bytes Nutzdaten pro Sekunde. <BR> <BR> <BR> <BR>In dem QBasic-Programm gibt es noch eine Zeile, die mir etwas unklar ist: <BR> <BR>wert% = INP(&H2F8) <BR> <BR>Ich weis nicht, was da gemacht wird. Was bewirkt der Befehl INP?
Import-Script
13.02.2004, 19:25
@Axel: Falls Du mein Programm meinst: <BR>wert% = INP(Adresse) liest eine I/O Adresse des PC und weist diese der Variablen wert zu. Das %hinter Wert deklariert wert zu Integer. Also aufpassen: wert ist real, wert% ist integer, vergisst man häufig - immer recht ärgerlicher Flüchtigkeitsfehler. Besser am Anfang gleich <BR>DIM wert as integer <BR>ich glaube sogar, Visual Basic besteht darauf. <BR>OK, zu dem &h278, das heisst 278hex wegen dem &h davor, bezeichnet also das Sende, bzw. Empfangsregister der COM2: <BR>COM1 liegt auf &h378 - so ist das halt beim PC mal festgelegt worden. <BR>Das inp oder out gibt auf Win2000 und XP Probleme, da diese keinen direkten Portzugriff erlauben. <BR>Das geht aber auch "legal" mit get und put, also einzelne Zeichen aus einer geöffneten Datei (in diesem Fall ist ja #2 eine Datei. <BR>Diese muss man soweit ich weiss dann mit <BR>open "com2...." for RANDOM as #irgendwas LEN=1 öffnen. Dann liefert get ein Zeichen, also CHAR. <BR>GET #2,ZEICHEN$ <BR>wert% = VAL(Zeichen$) <BR> <BR>so in etwa müsste das aussehen, hab ich aber noch nicht probiert. Das Problem ist, dass INPUT #2 ein Zeilenende <cr><lf> erwartet. Probier´s mal... <BR> <BR>Der Vorteil meiner "vor sich hin plätscher Idee" ist halt, dass das auf jedem Rechner läuft, auch auf MAC, und davon hab ich auch gut 10 Stück.
Import-Script
13.02.2004, 20:00
Hi, <BR> <BR>Prinzipiell geht das so: <BR> <BR>Senden: <BR>Databit anlegen <BR>Clock auf '1' <BR>Warten <BR>Clock auf '0' <BR>Warten <BR>...usw... <BR> <BR>Empfangen: <BR>Clock auf '1' <BR>Kurz warten <BR>Databit lesen <BR>Clock auf '0' <BR>Warten <BR>...usw... <BR> <BR>Bei 100 Abfragen pro Sekunde dürftest Du einen Messwert pro Skunde locker abholen können. <BR> <BR>Das Protokoll steht ja im Datenblatt des A/Ds <BR> <BR>Gruß <BR>Elmar <BR>
Import-Script
13.02.2004, 20:29
Mich hat an dem Lesen von der IO-Adresse iritiert, dass vorher ein Dateideskriptor geöffnet wurde, das eigentliche Lesen aber über einen anderen Aufruf stattfindet. <BR> <BR>@elmar <BR>Indem ich Clock blinken lasse, kann ich mir Datenbit für Datenbit abholen. Aber wenn ich noch ein Flowcontroll machen will, muss ich doch mehr als zwei Leitungen haben? Wie sonst weis ich, wann ein Byte anfängt? Ist jetzt vielleicht blöd gefragt, aber das hier ist das erste mal, das ich auf dieser Ebene arbeite.
Import-Script
14.02.2004, 10:03
@Axel: Wenn Du nicht gerade einen PC-Chip (8250, 16550) nimmst (z.B. für eigene CPUs - 8031, 68000), dann können die Seriell-Bausteine idR. "Auto-Flow-Control", "Auto-RTS", d.h. wenn ein Byte eingelaufen ist, also Startbit, 8 Daten, 2 Stopp und Parity reingetickert ist, setzen die automatisch die RTS Leitung und stoppen damit die Gegenstelle. Sobald Du das Byte vom Baustein abgeholt hast, geht die dann wieder auf "darf-senden", eben ohne, dass Du selbst dazu etwas tust, ausser die Funktion beim Initialisieren zu aktivieren. Dto geschieht mit CTS beim Senden. <BR>Der PC macht das "zu Fuss", d.h. wenn ein Byte eingelaufen ist, gibt der Baustein einen Interrupt und die Interruptroutine (Bios oder Treiber) kümmert sich dann um das Setzen bzw. Abfragen des Modem-Control-Registers und das Ansteuern eben dieser Leitungen. <BR>Da die Hochsprache ebenfalls das Bios benutzt, hast Du da auch keine Probleme, deshalb auch das Open "Com...",RS,CD usw. - damit stellst Du das praktisch ein; Also GET #2 und PUT #2 kümmern sich auch von alleine darum. <BR>Die Sache mit dem Portzugriff ist "nicht ganz sauber", halt "einfach ohne Ende", aber wie bereits gesagt, das geht auch nur < Win2k, also unter DOS. <BR>Selbst Delphi und Konsorten (Unix sowieso) handlen die COMs als Dateien, also überlass das ruhig dem Betriebssystem, dann klappt´s auch für später mit Win5000 oder LinuxV73,5. <BR>Übrigens, der MAC kann´s noch schöner, dem kannst Du den Baud-Clock extern einspeisen. Die MIDI-Leute machen das um dem 38,5kBaud schmackhaft zu machen; des Weiteren hast Du auch da die Möglichkeit mit Flow-Control zu arbeiten (HSKI usw) - die Leitungen sind praktisch RTS und DTR. <BR> <BR>Allerdings war es Sinn meiner Schaltung, sowas überhaupt nicht zu nutzen, also am PC RTS mit CTS brücken (Pin7 und Pin8) und DTR,DSR,DCD brücken (Pin1,Pin4 und Pin6) bezogen auf den 9pol Stecker. <BR>Dann flow-controlled der PC mit sich selbst in jeder Lebenslage. Ich brauche halt die DTR Leitung für die +12V für den Optokoppler, also muss ich dafür sorgen, dass die auf 12V geht, und das tut sie bei OPEN "Com...". Ausserdem kann ich dabei auch gleichzeitig die Baudrate einstellen; das ist der einzige Grund warum ich die Com überhaupt öffne.
Import-Script
16.02.2004, 16:33
Im Moment gefällt mir der lt1285 oder lt1288 am besten, da verstehe ich im Datenblatt am meisten. Ich möchte jetzt nur sicher gehen, das ich das richtig verstanden habe ( bei dem Wandler ) <BR>Ich lasse CLK blinken, damit der Chip weis, wie lang ich gerne ein Bit hätte. Da taucht die erste Frage auf: <BR> <BR>Kann das Bit beliebig lang sein, sagen wir mal, eine Sekunde? <BR>Müssen die Bits immer gleich lang sein? <BR> <BR>Dann weiter im Protokoll: <BR>Ich lasse CS auf low fallen, damit die Datenübertragung beginnt. Da schicke ich dann über DIn erstmal 4 Bits rein, da suche ich mir den Port aus und wie verglichen werden soll und auch MSBF. <BR> <BR>Dann kommen 12 Byte Daten aus DOut, in der Reihenfolge, die ich mir mit MSBF ausgesucht habe. Wenn ich fertig bin, setze ich CS wieder auf High und kann wieder von vorne anfangen. Richtig? <BR> <BR>Dann habe ich noch eine Frage zur Programmierung: Wie mache ich das mit den Bits am besten? Ich hatte mir jetzt überlegt, eine Methode zu schreiben, die etwa 100 Mal pro Sekunde aufgerufen wird, jeweils ein Bit verarbeitet und mitzählt, beim wie vielten Bit vom Datensatz sie gerade ist und entsprechend reagiert. Ich würde dann am Anfang der Methode CLK auf Low und am Ende wieder auf High setzen. Ist das einigermaßen schlau?}
Import-Script
16.02.2004, 16:44
Jetzt hab ich das Problem, das Conrad Elektronik den ltc1288 gar nicht im Angebot hat. Wo kann man denn sonst sowas kaufen? Bei RS hab ich ihn jetzt gesehen, da gibt es aber erstens zwei Versionen (CN mit einem Kanal und CS mit zwei Kanälen). Davon steht in meinem Datenblatt nichts und der soll da auch 17€ kosten.
Import-Script
16.02.2004, 17:55
@Axel: <BR>a) Ja! Die Geschwindigkeit mit der Du das machst ist ziemlich egal, da der Wandler synchron-seriell liefert, d.h. Du benutzt Clock und Daten. <BR>Bei meiner Variante muss natürlich der Clock exakt der Baudrate entsprechen, da ich den ja nicht mit übertrage; ich bin sozusagen an ein Zeitfenster gebunden. Das mit dem "merken" welches Bit zuletzt dran war, wie Du es vorhast, ist auch OK, allerdings - warum? Du startest einmal Die Wandlung, wenn Du wandeln willst, generierst Dir 12 bzw. 16 Clockzyklen nach al Gusto und wickelst die Kommunikation ab. Fertig. <BR>Warum sich an ein Zeitfenster binden? <BR>Das brauchst Du wirklich nur bei asynchroner Übertragung. <BR>b) gegen 17,-€ kannst Du herzlich wenig tun, ausser mal woanders gucken. Schukat hat ihn nicht, Farnell nur den 1286 und der kostet auch 10,65€, also gewöhn Dich an die 17,-€, die scheinen einigermassen real zu sein, zumindest für RS.
Import-Script
16.02.2004, 20:44
Hi, <BR> <BR>Kannst Dir so viel zeit nehmen, wie Du willst. ebachten musst Du höchstens die Zeit, die der Chip zum reagieren braucht. Also hast Du eine gewissen maximalgeschwindigkeit, aber keine Mindestgeschwindigkeit. <BR>Auf der Landstraße schritt zu fahren fällt ja auch nur unter "groben Unfug" und nicht unter das tempolimit <IMG SRC="http://progshop.com/elektronik/diskussion/clipart/happy.gif" ALT=":-)" BORDER=0> <BR> <BR>ich wiss jetzt nicht, wie dein USB-Dingens programiert wird, aber in Assembler und auch in C mache ich das immer so, dass ich das niedrwertigste Bit oder je nach dem das höherwertigste Bit auf '1' setze und alle anderen Bits auf '0'. Dann shifte ich das Register (variable) um eine stelle, les das empfangene Bit in das niederwertigste Bit bzw. höherwertigste Bit und das spielchen beginnt von neuem. So lange, bis das am Anfang gesetzte Bit aus dem register bzw. der Variable in das Carryflag rauspurzelt. Wenn Du 12-Bit einliest in ein 16-Bit register, dann prüfst Du, ob das gesetzte Bit an der 13. Stelle angekommen ist und löschst es. <BR> <BR>Gruß <BR>Elmar
Import-Script
16.02.2004, 22:57
>Im Moment gefällt mir der lt<font color="ff0000">c</font>1285 oder lt<font color="ff0000">c</font>1288 am besten <BR> <BR>Warum? Weil die schon bei 3V funktionieren und schwieriger beschaffbar sind? <BR> <BR>Die 5V Typen LTC1286 und LTC1298 mit den gleichen Kenndaten gibt's beide bei Reichelt (und der bietet mit Abstand die günstigste Versandpauschale). <BR> <BR>Gruß Gerd
Import-Script
17.02.2004, 14:29
Die sind vom Interface her identisch? Mir ist auch schon aufgefallen, das der 1288 schwer zu bekommen ist. Auch hab ich noch eine Frage zu dem Bit MSBF: Wenn ich das nicht setzte, sendet der die Daten ganz komisch: Erst fängt er mit dem 11 Bit an, geht runter bis 0 und dann wieder hoch auf 11. Was soll das?
Import-Script
17.02.2004, 18:48
Würde tippen, MSBF heisst "Most Significant Bit First", also erst 11, dann 10 bis runter zu Null. <BR>Was ist daran komisch? <BR>Das machen übrigens die ganzen SAR - Wandler, wenn sie nicht intern puffern. <BR>Kürze Erklärung: SAR heisst "sukszessive Approximation", d.h. der Wandler legt beim ersten Clock auf einen internen D/A Wandler 1/2 Uref. <BR>Dann sagt ein Komparator: Der A/D Wert ist grösser oder kleiner und setzt Bit 11 oder nicht <BR>Dann wird geteilt. Wenn grösser wird 3/4 Uref angelegt, wenn kleiner 1/4 und dann wieder der Komparator befragt --> gibt dann Bit 10. <BR>Das Spielchen geht dann weiter bis Bit 0. Immer wieder auf die Hälfte der Hälfte usw. eingrenzen. <BR>Die Summe dieser Bröckchen ist dann der Wert. <BR>Übrigens: Man kann das auch zwischendrin abwürgen; genau das mache ich in meiner (Einfach-8-Bit-aus 12er Wandler)-Sache. Ich sage nach 8 Bit lesen reicht´s mir, genauer will ich es nicht. Der Wandler würde noch 4 Bit liefern, kein Thema.
Import-Script
17.02.2004, 19:46
Komisch finde ich das hier; <BR>11 <BR>10 <BR>.. <BR>2 <BR>1 <BR>0 <BR>1 <BR>2 <BR>..11 <BR> <BR>So sieht das für mich aus. Von 11 bis 1 steht unten drunter tconv, bei 0 bis 11 tdata.
Powered by vBulletin® Version 4.1.12 Copyright ©2012 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.