Hallo, ich möchte gerne mit einem Micro ein Hallsensorsignal (Rechtecksignal ABS Sensoren) in einem Auto auslesen- genauer gesagt möchte ich die Flanken herauslesen. Die obere und untere Spannung variiert um nur ca 0,3V. Somit wäre die Spannungsdefinition: Umax= Ubat-1,5V Umin= Ubat-1,5V-0,3V Ubat variiert naturgemäss im Auto. Ich gehe davon aus das ich ca 1500 Signale pro Sekunde bekommen werde. Ich möchte vier Sensoren gleichzeitig auslesen und möglichst zeitrichtig zueinander verarbeiten. Ausgangssignal soll 5V Rechteck werden. Hier meine Frage: Wie errechne ich die benötigte Geschwindigkeit des ADCs um die Flanken sauber zu erfassen? Reichen meine Infos aus um das zu errechnen?
In den meisten Fällen liegt man mit 'so schnell wie möglich' nicht auf der falschen Seite. Im Ernst. Was willst du errechnen? Wie schnell der ADC getaktet werden muss oder wie oft du den ADC abfragen musst? Beides sind verschiedene Dinge. Allerdings ist man auch bei beiden mit "so schnell wie geht" meistens nicht falsch. ANsonsten gilt natürlich Shannon. Die Samplefrequenz muss mindestens das doppelte der höchsten vorkommenden Signalfrequenz sein.
Ja ich wusste das das kommt :-) Ich war nicht präzise genug. Wie würde man denn rechnen wenn man eine zeitliche Genauigkeit von 5% annehmen wollte?
"So schnell wie möglich" halte ich für den falschen Ansatz. "So schnell wie notwendig" ist sinnvoller. Das erforfert aber, dass du die Aufgabe entsprechend analysierst um die notwendige Abtastfrequenz festzulegen. Aber brauchst du wirklich einen ADC? Eine analoge Lösung mit 4 Schmitt-trggern mit entsprechender Referenzspannung, danach 4 Rechtecksignale an den Micro würden deine Software wesentlich vereinfachen.
Fritz schrieb: > Aber brauchst du wirklich einen ADC? Eine analoge Lösung mit 4 > Schmitt-trggern mit entsprechender Referenzspannung, danach 4 > Rechtecksignale an den Micro würden deine Software wesentlich > vereinfachen. Korrekt. Das sind mit ziemlicher Sicherheit keine Hallsensoren, sondern einfache Spulen mit einem Magnetkern. Da kommt auch kein Rechteck heraus, sondern eher ein Sinus. fonsana
soulid schrieb: > ich möchte gerne mit einem Micro ein Hallsensorsignal (Rechtecksignal > ABS Sensoren) in einem Auto auslesen- genauer gesagt möchte ich die > Flanken herauslesen. Die obere und untere Spannung variiert um nur ca > 0,3V. Das sind IC's die ein Hallsensorelement haben. Was du am Kabel siehst ist NICHT das Hallsebnsor Signal sondern etwas aufbereitetes. Diese Sensoren haben ein Stromschnittstelle und funktionieren nicht über die Spannung. So ein Sensor Ic ist zb das hier : TLE4941 fonsana schrieb: > Das sind mit ziemlicher Sicherheit keine Hallsensoren, sondern einfache > Spulen mit einem Magnetkern. Da kommt auch kein Rechteck heraus, sondern > eher ein Sinus. Ja die Variante gab es mal, wird aber in Europa seid locker 10 Jahren nicht mehr verwendet. Und warum? Ganz einfach , die heutigen IC's TLE4941,.... sind: 1. Billiger 2. Funktionieren auch besser bei sehr niedrigen Geschwindigkeiten.
Ralph schrieb: > Ja die Variante gab es mal, wird aber in Europa seid locker 10 Jahren > nicht mehr verwendet. > Und warum? Ganz einfach , die heutigen IC's TLE4941,.... sind: > 1. Billiger > 2. Funktionieren auch besser bei sehr niedrigen Geschwindigkeiten. Na gut, meine Autos sind aelter, teilweise viel aelter. fonsana
Hallo Fritz, ich gebe zu das ein Schmitt Trigger auch gut wäre- bin mit einem Micro einfach ein bisschen flexibler und könnte noch ein paar andere Funktionen einbauen. Ich bin mir übrigens sicher das es keine induktiven, sondern Hall Sensoren sind. Im ABS nimmt man Induktive schon länger nicht mehr. Nach welchen Parametern muss man denn die "Aufgabe analysieren"? Kann ich mich irgendwo einlesen? Mir fehlt ein Startpunkt zur Recherche. Sahnnon kannte ich wohl, ist für meine "zeitrichtige" Anwendung aber nicht hilfreich weil man damit ja eigentlich nur die Flanke "irgendwann" erkennen kann... Ich hatte schon mal den das mbed board ins Auge gefasst. Lt Datenblatt des LPC1768 kann das Teil folgendes "12-bit Analog-to-Digital Converter (ADC) with input multiplexing among eight pins, conversion rates up to 200 kHz, and multiple result registers"
soulid schrieb: > Sahnnon kannte ich wohl, ist für meine "zeitrichtige" Anwendung aber > nicht hilfreich weil man damit ja eigentlich nur die Flanke "irgendwann" > erkennen kann... Das funktioniert aber nur, wenn deine Pulsfrequenz unterhalb der halben Abtastfrequenz liegt. Falls deine Pulse deutlich unsymmetrisch sind, brauchst du sogar noch ein Filter zur Bandbreitenbegrenzung.
soulid schrieb: > Nach welchen Parametern muss man denn die "Aufgabe analysieren"? Kann > ich mich irgendwo einlesen? Mir fehlt ein Startpunkt zur Recherche. Wie ich oben schon mal geschrieben hatte : So ein Sensor Ic ist zb das hier : TLE4941 Die Dinger haben eine Stromschnittstelle. Mit dem ADC so wie du es dir denkst wird das nichts. Du brauchst entweder einen Stromspiegel, oder einen Lastwiderstand um das Signal auszukoppeln, und dahinter kommt dann einfach die Capture Unit des µC.
Willst du die Spielerei im Auto machen und das ABS Steuergerät ist noch angeschlossen ? ==> vergiss es, Das ABS Steuergerät wird dir da Fehler eintragen und nicht mehr funktionieren. Lies dir da besser die Information vom CAN.
Ist es so? Der TO beobachtet eine Spannungsschwankung an irgend einem Widerstand im System? Die Information steckt in den Flanken? Dann kann er dieses Signal doch mit einem Spannungsfolger abnehmen und einem Komparator zuführen. Dieser bekommt seine Referenz von Bordnetz (oder dem RMS-Wert des Signals), so dass dessen Schwankungen heraus fallen. Dieses Signal lässt sich dann mit dem Controller weiter verarbeiten. Oder er digitalisiert das Signal und macht das o.A. Prozedere in Software. Dann muss eben so schnell abgesampled werden dass die zeitliche Auflösung stimmt. Mit Shannon ist es hier nichts, da das Signal nicht ideal sinusförmig ist. In nullter Näherung würde ich die Sampleperiode gleich der 10-fachen Periode des kürzesten vorkommenden Impulses annehmen.
Georg W. schrieb: > Mit Shannon ist es hier nichts, da das Signal nicht ideal sinusförmig > ist. An Herrn Shannon wird auch hier kein Weg vorbei führen. Wenn es nicht reicht, die Grundfrequenz des Signals richtig abzutasten und man auch noch auf eine Bandbegrenzung verzichten möchte, muß man sich an den erforderlichen Oberwellen orientieren und mit den durch Aliasing gespiegelten, unterabgetasteten Frequenzanteilen leben.
soulid schrieb: > Ich hatte schon mal den das mbed board ins Auge gefasst. Lt Datenblatt > des LPC1768 kann das Teil folgendes > "12-bit Analog-to-Digital Converter (ADC) with input multiplexing among > eight pins, conversion rates up to 200 kHz, and multiple result > registers" So dann doch ein ADC zum Einsatz kommen sollte, würde ich statt LPC17xx eher einen STM32 empfehlen. Auch wenn ich die nicht so mag, sind deren ADC's den LPC's doch um Längen überlegen. Die haben neben diversen nützlichen modes (DMA, half finished, echtes zeitgleiches Messen zweier Signale etc.) auch bis zu 2 ADC, bessere Meßergebnisse was Genauigkeit/Nichtlinerität etc. betrifft und vor allem 1 MHz pro ADC.
soulid schrieb: > Nach welchen Parametern muss man denn die "Aufgabe analysieren"? Kann > ich mich irgendwo einlesen? Mir fehlt ein Startpunkt zur Recherche. Du hast uns leider nicht genau erklärt, was du wirklich machen willst. Flanken detektieren ist zu wenig gesagt. Willst du den zeitlichen Abstand zwischen einer positiven und einer negativen Flanke oder zwischen zwei gleichen Flanken messen. Daraus die Geschwindigkeit berechnen? Oder über mehrere Flanken die Frequenz messen und daraus die Geschwindigkeit berechnen. Oder was willst du mit den Signalen machen? Willst du nur einen Tacho für alle 4 Räder machen oder was sonst? Wieviel Rechenzeit brauchst du für dein Problem, wie schnell muß das sein Stichwort Echtzeitverhalten. Das meinte ich mit genauer Analyse und danach richtet sich die Lösung. Von einem Mikro habe ich nicht generell abgeraten sonder nur die ADC-Signalerfassung. Aber wenn man es mit einem an sich digital zu interprätierenden Signal zu tun hat sollte man sich schon überlegen was es bringt das Signal zu digitalisieren und danach die Flanke zu bestimmen. Die zeitliche Auflösung wird mit einer "Schmitt-Trigger Digitaleingang" Lösung als mit einer "ADC Lösung" um vieles einfacher. Viele Mikros haben Timer Input capture-compare Module und du bekommst die Zeitmarke der Flanke mit minimalem Aufwand in größtmöglicher zeitlicher Auflösung.
Hallo Fritz, vielen Dank für Deine Fragen. Damit wird mir das Problem auch noch mal selbst verdeutlicht. Ich möchte in ein Fahrzeug mit frei programmierbarer Motorsteuerung mit einer Traktionskontrolle ausstatten. Die ECU Eingänge für die Radgeschwindigkeit nehmen entweder die Hall Sensoren oder Induktive Sensoren. Da ich die Hall Sensoren aber noch fürs ABS brauche kann ich die nicht einfach so benutzen. Das Eingangssignal welche ich für die Motorsteuerung haben möchte ist ein 0-5V Signal. Die ABS Sensoren sind aktive Sensoren und über das ABS Steuergerät an der Batteriespannung angeschlossen. Das Stromsignal des Hallsensos wird im ABS Steuergerät über einen Spannungsteiler ausgelesen. Genau diesen Spannung variiert um ca 0.3V- der effektive Wert aber schwankt mit der Batteriespannung. Ich klemme mich also an die ABS Leitung und kann diese Spannungen auslesen. Somit benötige ich ein Interface welches mir beim halben Spannungshub (also 0,15V plus Batteriespannungsschwankung) den Digitalen Ausgang High/ Low setzt und somit das kleine 0,3 V Signal in 0-5V "übersetzt" Warum ich einen Micro einsetzen will ist eigentlich mein eigene Bequemlichkeit. Wenn ich mit den Widerständen die Spannung des Spannungskompensierten Komperators nicht treffe, fange ich wieder wie wild an zu Widerstände löten (naturgemäss hat man die nicht da, oder?)....und dazu habe ich an der Rennstrecke keine Zeit! Dann doch lieber den Micro neu flashen und alles geht gut, oder? Den Komparator habe ich übrigens schon mal Mithilfe der Homepage hier berechnet... http://sim.okawa-denshi.jp/en/rercal.php
Abseits öffentlicher Straßen ? Trenn für jeden Sensor die Leitung auf und schalte einen Reihenwiderstand mit ~ 10 Ohm dazwischen. Über den Widerstand werden dann ~70 mV (LowPhase) oder ~140 mV (HighPhase) abfallen. Das leg auf einen Schmitt trigger mit Schaltschwelle bei 100 mV. Die 10 Ohm dürften für das ABS Steuergerät noch kein Problem darstellen. Aber achte darauf das du die Verbindungstelle gut abdichtest. Ansonsten sieh dir mal die Ausgänge des ABS Steuergerätes an. Es gibt einige die geben die Impulse vom Rad direkt als Rechteck an Ausgängen aus. Einige geben in dieser Form eine Fahrzeuggeschwindigkeit aus. Oder diese Information liegt auf dem CAN. Wenn du die Info an diesen Stellen bekommen kannst ist das auf jedenfall zuverlässiger als Basteleien an den Sensoren. Das Datenprotokoll und Schnittstellenbeschreibung der Sensoren findest du wenn du mal das Datenblatt von dem hier durchliest. TLE4941 Das Teil ist von Infineon, es gibt auch andere, diese verwenden jedoch alle die gleichen Schnittstellenparameter. Mit dem ADC macht das recht wenig Sinn. Du müsstest 4 Kanäle mit ca 5 kHz abtasten. Das gibt für den µC schon eine recht ordentliche Last, und dazu willst du dann noch Algorithmen wie eine Traktionskontrolle rechnen. Da wirst du schon einen sehr potenten µC brauchen. Es macht auch recht wenig Sinn ein digitales Signal Analog abzutasten um daraus weder ein digital Signal zu erzeugen. Lies das digital Signal direkt über die Capture Eingänge ein. Und viel Erfolg mit der Traktionskontrolle, da hast du dir eine sehr ambitionierte Aufgabe gestellt. Da wirst du auch noch ein paar mehr Signale aus dem Antriebsstrang brauchen als nur die Radgeschwindigkeit.
Meisten activen ABS-sensoren haben eine einfache Strom-schnitstelle. Der Strom ist 7 oder 14 mA (-10%, +15%). In das Steuergerat wird dan einfach die min ueber eine Serien wiederstand (ca 100 ohm) an Masse gelegt. Die spannung an die -pol ist dan immer 0.7 oder 1.4 Volt, und eigenlich nicht beinflusst von Batterie spannung. Die + anschluss von sensor hat immer die 12 V Bordnetz spannung.
Jan H. schrieb: > Meisten activen ABS-sensoren haben eine einfache Strom-schnitstelle Alle Jan H. schrieb: > In das Steuergerat wird dan > einfach die min ueber eine Serien wiederstand (ca 100 ohm) an Masse > gelegt Das ist eine Möglichkeit, nach den Werten vom Startpost scheint es als ob in dem Steuergerät ein Stromspiegel verwendet wird und kein Lastwiderstand.
Hallo Ralph, das ABS Gerät hat (leider) keinen direkten Ausgänge- das wäre natürlich ideal gewesen. Habe mir das vom ABS Hersteller bestätigen lassen. Mit CAN kann die (Motorsport) ECU noch umgehen. Den Sensor dessen Datenblatt ich gelesen habe kam von NXP. Aber im Grunde ist die Testschaltung (und die ist sehr ähnlich zur ABS internen Schaltung nehme ich an) arbeitet auch mit einem Spannungsteiler, der dann ABS intern ausgelesen wird. Als Microcontroller hatte ich schon mal den UNO32 mit einem PIC32MX320F128 ausgeguckt- der kostet nur 25€. Der kann auch mit der Arduino IDE programmiert werden. Mit dem Arduino habe ich schon gebastelt und habe kein Problem mit dem Code. Der Controller kann 1000 ksps- also 250.000 Abtastungen pro Sekunde pro Kanal. Der Prozessor im Ganzen kann natürlich seeeehr viel mehr als ich benutze, aber für 25€ montiert auf einem PCB ist das OK für mich. Ich habe ein bisschen gerechnet. Ich kann (aufgrund der Fahrgeschwindigkeit (265km/h, 54 Zähne pro Umdrehungen, 2,2m Radumfang) mit ca 3600 Flanken pro Sekunde rechnen rechnen. Mit der o.g. Abtastung von 250ksps komme ich auf eine maximale zeitlichen Abweichung von unter 1,5% raus (über ne Gaussche verteilt). Ich finde das nicht sooo viel. Wenn ich den 10OHm Widerstand in Serie schalte und sich die Betriebsspannung ändert...bleibt der Spannungshub wirklich gleich?
Diesen NXP sensoren verhalten sich wirklich wie eine Stromquelle. Ab eine Spannung van ca 6 Volt stelt sich diese Strom von 7 oder 14mA ein, und die bleibt dan ueber das ganse Spannungsbereich (bis maximal 28 VDC). In Prinzip reicht es aus um ueber eine Spannungsteiler mit eine feste Widerstand an Masse zu messen. Normalerweise gibt diese Wiederstand in ABS-Steuergerat, so kan men einfach diese Spannung and - Pol messen (0.7 oder 1.4 volt bei 115 ohm. Mir scheint es einfacher um diesen Signal ueber eine OP und dan eine Interrupt (Input Capture) die Periode zu messen.
Vergiss das mit dem ADC, das wird nie sauber funktionieren. Signalaufbereitung mit OP ( Schmitttrigger ) und dann als digitla signal an den Capture Eingang. Alles andere ist Unsinn ohne Chance auf stabile Funktion. Das ist eine Stromschnittsstelle , da kannst du anstatt dem 10 Ohm auch einen 5 KOhm in reihe schalten, an den 7 und 14 mA ändert sich nichts solange die Versorgungsspannung nur hoch genug ist. Bei 10 Ohm sollte das ganz aber weiterhin bis zu 6 Volt runter funktionieren.
Hallo Ralph, Message verstanden. Ich werde wohl löten... LM339 als Komperator für den Schmitt Trigger OK?
soulid schrieb: > Message verstanden. Ich werde wohl löten... LM339 als Komperator für den > Schmitt Trigger OK? Im Prinzip ja. Aber nur wenn du den Lastwiderstand des Sensors gegen Masse schaltest. Der LM339 kann Eingangssignale nicht bis zur Versorgung bearbeiten, dagegen aber bis GND (Siehe Comm Mode Range).
Hallo Fritz, ich habe heute nochmal gemessen. Einmal mit 13Ohm Serienwiderstand und einmal ohne. Ergebnisse im Screenshot anbei. Welchen Chip kannst Du denn empfehlen um den 13Ohm Serienwiderstand wie gezeichnet zu messen? Gibt es eine Beispielschaltung die ich zur Schaltung benutzen kann? Brauch ich eine (5V) Referenzspannung? Ich würde ungern einen Widerstand parallel schalten wollen. Ich denke das sonst die Strommessung des ABS Geräts nicht mehr funktionieren würde, oder?
Linke Messung , hier hast du die Spannung über dem Sensor gemessen, und nicht die Spannung über dem Widerstand. Die Spannung über den Widerstand müsste 110 Ohm * 7 mA = 770 mV und 110Ohm * 14 mA = 1.54V sein wenn das richtig angeschlossen wäre. Subtrahierst du deine gemessenen Spannung von der Versorgungsspannung kommst das ungefähr hin mit 0,81V und 1,59V Rechte Messung, sieht besser aus. Die 110Ohm kannst du da aber weglassen, wird nicht gebraucht. Wie du siehst sind die Spannungen über den 13.3Ohm widerstand über die Spannungsverlauf konstant. mit URI kommst du da auch so in etwa auf die 14 mA und die 7 mA der Stromschnittstelle des Sensors. Leg diese Spannungen 0,1V und 0,19V an den Schmitttrigger Eingang und stell dir die Schaltschwelle auf 0,15V.
Ralph schrieb: > Leg diese Spannungen 0,1V und 0,19V an den Schmitttrigger Eingang und > stell dir die Schaltschwelle auf 0,15V. Ich würde aber die Spannungen doch höher wählen. ZB: Last R = 120 Ohm ergibt 0,84V und 1,68V Die Schaltschwelle vom Komparator legst du auf 1,25V und bist damit ziemlich in der Mitte. Das ist weniger störanfällig. Als Referenz für die 1,25V nehme ich gerne den LM385-1,25V, funktioniert mit einem Vorwiderstand wie eine Zenerdiode.
Fritz schrieb: > Ich würde aber die Spannungen doch höher wählen. > ZB: Last R = 120 Ohm ergibt > 0,84V und 1,68V Der Wert ist dann schöner, da geb ich dir recht. Allerdings ist auch das ABS Steuergerät noch an der Leitung mit dran. Bei einer guten 12 Volt Versorgung könnte das ganze sogar mit den 120 Ohm noch funktionieren. Bricht allerdings die Versorgungsspannung zusammen, zb Anlasser, wird das ABS Steuergerät die Sensoren nicht mehr korrekt erkennen und Fehler eintragen. Damit ist dann auch keinem geholfen. Aus dem Grund den Serienwiderstand so klein wie möglich um den Einfluß auf das ABS Steuergerät so gering wie möglich zu halten.
Ich habe noch was anderes: Die Triggerspannung zwischen high und Low des Motorsteuergeräts liegt bei 0,6V. Wenn ich also wechselnde Spannungen zwischen - sagen wir- 0,1 und 0,9V hätte wäre doch alles gut, oder? Geht auch ein OP AMP als Differenzverstärker für meinen Fall? Der Differenzverstärker würde mir nur die relative Spnnungsänderung herausrechnen und nur den Spannungshub ausgeben, oder? Damit würde ich auch gar keinen Controller brauchen. Ich habe unter http://www.elektronik-kompendium.de/sites/slt/0210153.htm die Mathematik hinter dem Differenzverstärker gefunden. Nach den Formeln habe ich in Excel ein bisschen gespielt und tatsächlich Werte gefunden die gut funktionieren könnten. Anbei der Excel Screenshot . Als Annahme habe ich die gemessenen Spannungen unter Ue und Ue2 als HIGH und LOW Werte genutzt. Als OpAmp würde ich den LM348 nehmen wollen.
soulid schrieb: > Geht auch ein OP AMP als Differenzverstärker für meinen Fall? ja klar, man kann einen Differenzverstärker diskret aufbauen, aber ich denke mal das 99% aller Fälle ein OP Amp genutzt wird soulid schrieb: > Die Triggerspannung zwischen high und Low des Motorsteuergeräts liegt > bei 0,6V. Wenn ich also wechselnde Spannungen zwischen - sagen wir- 0,1 > und 0,9V hätte wäre doch alles gut, oder? Wahrscheinlich ja. Hängt vom Motorsteuergerät ab. soulid schrieb: > Der > Differenzverstärker würde mir nur die relative Spnnungsänderung > herausrechnen und nur den Spannungshub ausgeben, oder? Damit würde ich > auch gar keinen Controller brauchen. Ja, wenn du nur die 4 Einzelfrequenzen brauchst. Nein, wenn du diese 4 noch zu einem Signal zusammen fassen musst. Zur Schaltung, ich würde das Signal an der Low Side auskoppeln. Dann sparst du dir den Boostconverter für die OpAmp versorgen. B+ des OpAmp muss in der Regel ca. 1,5 Volt über dem Eingangspegel liegen. Und was hast du da mit der SerienDiode vor ? Der Differenzverstärker lässt sich über die Widerstände auch so einstellen das direkt die benötigten Spannungspegel am Ausgang anliegen. Und so wird aus einer µC Schaltung mit zeitkritischen ADC ,.... Berechnungen eine einfache analog Schaltung mit einer handvoll Teilen. Wie einfach doch die Welt manchmal sein kann............
Hallo Ralph, ja die Welt wird manchmal so einfach wenn man nur mit den richtigen Leuten spricht (mailt). Ich habe übrigens gerade eine Schaltung auf dem Breadboard aufgebaut. Ich habe nämlich am Hall Sensor ein bisschen rumgemessen und festgestellt das die Spannungshübe NACH dem Hall Sensor immer gleich sind (warum ich das nicht VORHER gemerkt habe :-( ). Und schon wars gaaanz einfach: - Einen LM2940 9V als Spannungsregeler an Vin und den Spannungsteiler der Referenzspannung (LM2940 ist automotive tauglich) - Die Referenzspannung auf (Uhigh+Ulow)/2 eingestellt - Komperator LM311 angeklemmt - Eine LED als Kontrolle. - Die benötigte Spannung bekomme ich an ColOut abgegriffen Funktioniert sehr schön zwischen 9V und 16V und mit einer Reaktionszeit von 220nS "ausreichend" schnell (grins). Vielen Dank an Euch für die Hilfe und ein schönes Wochenende! Problem gelöst!!!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.