Hardware invert UART TTL (P1 Slimme Meter)

[SOLVED]

Hallo allemaal,

Ik ben vrij nieuw met het fabriceren van schakelingen en momenteel bezig met een projectje om de P1 poort van een Slimme Meter uit te lezen. En ik ben momenteel op zoek naar een manier om hardwarematig een UART TTL signaal te inverten;

Waar normaal boven de 4V een logische 1 is, is dat bij de slimme meter (DSMR 4) een logische 0 en onder de 1V is dus een 1.

Het uitlezen heb ik in eerste instatie met een FTDI module gedaan, zoals hier te zien is:

http://www.quassi.nl/www/wp-content/uploads/2015/01/interface.png

Vervolgens heb ik met een tool van FTDI de RxD pin ge-invert, waardoor de informatie netjes binnen komt. Deze informatie heb ik hier verkregen: http://www.quassi.nl/2015/01/03/read-data-from-the-landis-gyr-e350-sma…

Nu zoek ik echter een manier om het TTL signaal te inverten met hardware (transistor, cmos, etc), zodat ik een TTL naar Bluetooth module (HC-06) kan gebruiken i.p.v. de FTDI (info over de BT module: http://mcuoneclipse.com/2013/06/19/using-the-hc-06-bluetooth-module/).

Ik heb informatie gevonden over een mogelijkheid van een BS170 en SN7404 ( http://domoticx.com/p1-poort-van-een-slimme-meter-uitlezen/ ) maar ik heb geen idee hoe deze aangesloten dienen te worden in mijn situatie (geen Arduino). Al mijn pogingen resulteren in bagger output... Zelf heb ik het vermoeden dat de weerstand tussen de RxD en 5V, die te zien is in de afbeelding bovenaan deze post, voor conflicten zorgt, omdat ik deze niet terug zie in het voorbeeld van domoticx (DSMR 2.0).

Hopelijk kan iemand mij hierbij helpen... Ik ben je alvast eeuwig dankbaar!

Arco

Special Member

Gewoon een MAX232 ertussen. Meter heeft zo te zien RS232 output.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Dank je Arco, ik heb inderdaad ook een MAX232CPE liggen, maar het is mij niet gelukt om uit te vinden welke pinnen ik dien te verbinden. Ik wou dat het voor mij zo simpel was als jij het nu stelt... :[

Hopelijk kan je mij de juiste richting op wijzen met de MAX232 (de meter levert trouwens dankzij DSMR 4.0 ook 5V 100mA).

Arco

Special Member

Genoeg schemaatjes te vinden. Als je RTS ook aan wilt sluiten kun je daar een van de overgebleven inverters voor gebruiken.

http://www.mikrocontroller.net/attachment/95628/max232.png

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
Hoeveel vermogen denk je eigenlijk nodig te hebben?, zie https://zelfbouwaudio.nl/forum/viewtopic.php?t=13476

indien je een ftdi Ft232TL ofzo gebruikt kun je met het toolje FT Prog (op ftdi website) alle io pinnen inverteren. geen hardware voor nodig dus.

Op 16 april 2015 16:15:48 schreef Arco:
Genoeg schemaatjes te vinden. Als je RTS ook aan wilt sluiten kun je daar een van de overgebleven inverters voor gebruiken

Deze schakeling zet de inverted UART TTL (0v = 1 en 5v = 0) dus om naar 0v = 0 en 5v = 1? Ik ben in de war doordat ik alleen maar lees dat de MAX232 de voltages omzet naar RS232 (12v)...

Op 16 april 2015 16:33:53 schreef mtb:
Zo kan het ook: http://forum.zelfbouwaudio.nl/viewtopic.php?f=8&t=20606 en meteen galvanisch gescheiden!

Ik hou het graag simpel voor de eerste poging... Maar dank voor het delen.

Op 16 april 2015 16:36:30 schreef Stijnos:
indien je een ftdi Ft232TL ofzo gebruikt kun je met het toolje FT Prog (op ftdi website) alle io pinnen inverteren. geen hardware voor nodig dus.

Klopt, maar zoals beschreven zou ik graag een standalone HC06 TTL to Bluetooth module gaan gebruiken die geen FTDI gebruikt. Het enige wat ik nu mis is de inversie van de logische waarden. :)

Shiptronic

Overleden

Op 16 april 2015 16:33:53 schreef mtb:
Zo kan het ook: http://forum.zelfbouwaudio.nl/viewtopic.php?f=8&t=20606 en meteen galvanisch gescheiden!

De meter heeft inwendig al een opto gescheiden uitgang.

Wie de vraag stelt, zal met het antwoord moeten leren leven.

De meter is TTL nivo en de Bluetooth module die TS wil aansluiten kan zelfs maar 3.3V aan.
Een Max232 er tussen die naar ±10V gaat lijkt mij niet.
Je hebt hier een inverterende level shifter nodig of hopen dat je BT module 5V tolerant is en alleen een inverter ertussen.

bprosman

Golden Member

@Arco,

Het is weliswaar een TTL level RS232 maar met een geinverteerde datalijn.
Zelf heb ik er een 7407 (die had ik het snelste gevonden) er tussen gehangen en vervolgens zo'n dingetje :

http://www.emartee.com/product/41777/

[Bericht gewijzigd door bprosman op donderdag 16 april 2015 22:25:10 (17%)

De jongere generatie loopt veel te vaak zijn PIC achterna.

@2N3055
Inderdaad, dit was ook mijn gedachte, maar ik ben een beetje bang om, als leek zijnde, iets 'doms' te zeggen... haha

De SN7404 is toch een "inverter"? Het (voor mij) gekke is dat het verbinden van:
Pin 14 <--> +5V meter
Pin 7 <--> GND meter
Pin 1 <--> Data/TxD meter
Pin 2 <--> FTDI RxD (non-inverted)
Alleen maar resulteert in bagger of geen communicatie. Terwijl er zonder de SN7404, en FTDI met een inverted RxD wel gewoon "schoonheid" binnen komt.

De UART naar BT module is inderdaad niet 5V tolerant (3.3V level), maar ik ben er vrij zeker van dat een voltage-devider dit gewoon oplost.. Dus een inverter en daar achter een voltage-devider die alles naar 3,3333V trekt moet toch afdoende zijn?

bprosman

Golden Member

Alleen maar resulteert in bagger of geen communicatie.

Gebruik je wel de juiste baudrate ? Heel veel voorbeelden op het Internet gaan uit van 9600 Baud terwijl de moderne slimme meters op 115200 Baud zitten.

De jongere generatie loopt veel te vaak zijn PIC achterna.

Ja, geen 9600 7E1, maar 115200 8N1.

Op 16 april 2015 22:23:59 schreef bprosman:
Zelf heb ik er een 7407 (die had ik het snelste gevonden) er tussen gehangen en vervolgens zo'n dingetje :

http://www.emartee.com/product/41777/

7407? Geen 7404?

bprosman

Golden Member

Probeer het eerst goed op een PC uit te lezen, dan pas BT er in betrekken. Dan weet je waar je het moet zoeken.

Inderdaad een 7407, maakt niet zoveel uit hoor tov een 7404, extra weerstand ivm de open collector uitgang.
Maar zoals ik al schreef, dat was puur omdat ik die sneller gevonden had dan de 7404 (of 7414).

[Bericht gewijzigd door Henry S. op zondag 24 april 2016 16:21:53 (48%)

De jongere generatie loopt veel te vaak zijn PIC achterna.

Op 16 april 2015 22:41:11 schreef bprosman:
Probeer het eerst goed op een PC uit te lezen, dan pas BT er in betrekken. Dan weet je waar je het moet zoeken.

Inderdaad, dat probeer ik ook met de FTDI (TTL naar usb), maar nog niet gelukt zonder de RxD pin met hun software tooltje te inverten.

Op 16 april 2015 22:42:52 schreef bprosman:
Inderdaad een 7407, maakt niet zoveel uit hoor tov een 7404, extra weerstand ivm de open collector uitgang.
Maar zoals ik al schreef, dat was puur omdat ik die sneller gevonden had dan de 7404 (of 7414).

Oh, nou ik vind elke andere mogelijke oplossing uiterst interessant.. Kan je iets specifieker zijn met met extra weerstand met de 7407.. Een pull-up, pull-down, hoe bepaal ik de waarde?
//toevoeging:Ah een pull-up tussen de 2.2k en 10k. Als ik het zo lees is de 7407 gewoon een level shifter en verder niets (geen not poort). Klopt dit?

bprosman

Golden Member

maar nog niet gelukt zonder de RxD pin met hun software tooltje te inverten.

Dat klopt ook want het signal is niet standaard maar geinverteerd.

Kijk hier even voor "Open collector" :
http://nl.wikipedia.org/wiki/Transistor-transistorlogica

Overigens vind ik dit nog steeds de mooiste (meest cleane) level shifter tov weerstandsdelers etc.
https://learn.sparkfun.com/tutorials/bi-directional-logic-level-conver…

[Bericht gewijzigd door bprosman op donderdag 16 april 2015 23:36:15 (11%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

@Arco, Het is weliswaar een TTL level RS232 maar met een geinverteerde datalijn.

Er bestaat niet zoiets als 'TTL level RS232'... ;) (RS232 = +/- 3...15v, negative logic)
Wat ik lees is de output rechtstreeks met een RS232-USB omzetter uit te lezen (die inverteert immers al):

Uitlezen met een USB <--> RS232 Kabel:
Dit is de makkelijkste manier, de hardware in het kabeltje zelf kan al met de omgekeerde instellingen van de P1 poort overweg er is dus GEEN extra hardware nodig.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

@bprosman
Ja, behalve dat ik, op het moment dat de FTDI (TTL naar usb) niet inverted was ingesteld, er een 7404 tussen gehangen had (not poort), waardoor het signaal toch weer normaal zou moeten zijn en wel zou moeten werken.. Geen gekke gedachte toch?

Ik zal het linkje morgen direct doornemen, dank je.

@Arco
Mijn einddoel is, zoals in de startpost genoemd, Bluetooth (HC05 of HC06 module) en geen USB,zo'n oplossing is voor mij dus helaas niet geschikt.

bprosman

Golden Member

Ja, behalve dat ik, op het moment dat de FTDI (TTL naar usb) niet inverted was ingesteld, er een 7404 tussen gehangen had (not poort), waardoor het signaal toch weer normaal zou moeten zijn en wel zou moeten werken.. Geen gekke gedachte toch?

Dat klopt met de FTDI op niet inverteren en de 7404 er tussen zou het moeten werken.

Pin 14 <--> +5V meter
Pin 7 <--> GND meter
Pin 1 <--> Data/TxD meter
Pin 2 <--> FTDI RxD (non-inverted)

Je RTS signaal heb je ook aangesloten ? Anders zal de meter geen data gaan sturen.

Wat ik lees is de output rechtstreeks met een RS232-USB omzetter uit te lezen (die inverteert immers al):

Denk dat je me niet begrijpt. De FTDI chip kun je het inkomende TTL signaal laten inverteren. Hierbij moet je echter uitkijken want andere (merken) RS232-USB chips kunnen dit niet, de PL2303 bijvoorbeeld.
De meter gebruikt negatieve logica op zijn uitgangssignaal.

[Bericht gewijzigd door Henry S. op zondag 24 april 2016 16:22:29 (26%)

De jongere generatie loopt veel te vaak zijn PIC achterna.
Arco

Special Member

Ik denk dat er inderdaad ergens een misverstand is. Een USB <-> RS232 omzetter inverteert altijd, dus er valt niets in te stellen... (anders is 't geen RS232...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Op 16 april 2015 23:41:45 schreef bprosman:
Je RTS signaal heb je ook aangesloten ? Anders zal de meter geen data gaan sturen.

Ja,zoals zichtbaar in de schema in mijn startpost. Maar de combinatie van dat schema met de 7404 is waarschijnlijk waar ik iets fout doe... De 7404 zit in mijn geval tussen de RxD van de FTDI en de datalijn van de meter, zoals beschreven in mijn reactie die je geciteerd hebt.

bprosman

Golden Member

Ik denk dat er inderdaad ergens een misverstand is. Een USB <-> RS232 omzetter inverteert altijd, dus er valt niets in te stellen... (anders is 't geen RS232...)

Klopt maar het inkomende TTL signaal is negatieve logica (1=0V, 0=5V) dus moet NOG een keer geinverteerd worden.

De 7404 zit in mijn geval tussen de RxD van de FTDI en de datalijn van de meter, zoals beschreven in mijn reactie die je geciteerd hebt.

Daar hoort hij ook :-) Ander poortje geprobeerd van de 7404 ?

De jongere generatie loopt veel te vaak zijn PIC achterna.

Daar hoort hij ook :-) Ander poortje geprobeerd van de 7404 ?

Ach ja, zoveel verschillende pogingen gedaan. Maar ik heb vandaag een nieuwe 7404 binnen heb gekregen... En het communiceren van de meter TxD (inverted) -> 7407 -> RxD non-inverted -> voltage devider naar 3.3v -> RxD BT module -> BT werkt nu volledig. :D Heel erg bedankt allemaal voor het meedenken!

Op 16 april 2015 22:41:11 schreef bprosman:
Probeer het eerst goed op een PC uit te lezen, dan pas BT er in betrekken. Dan weet je waar je het moet zoeken.

Hoe doe ik dat precies?

Ik heb de P1 met mijn ftdi verbonden, en zoals eerder is benoemd de ftdi zelf gebruiken om rxd te inverteren. Als ik dus ftdi met pc verbind, hoe krijg ik dhet telegram weergegeven. Ik lees dat die met een command venster kan, maar geen idee hoe dit moet.

bprosman

Golden Member

Wat voor PC heb je en welk operating system ?
Als je een Windows 7 of hoger hebt kun je de gratis versie van bijvoorbeeld Hyperterminal of PuTTy nemen.

De jongere generatie loopt veel te vaak zijn PIC achterna.