Ok sätt att föra in 12V signal till 3.3V MCU?
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Ok sätt att föra in 12V signal till 3.3V MCU?
Tjena!
Håller just nu på med ett projekt där jag behöver läsa av diverse 12V signaler såsom helljus å blinkers med en STM32:a och undrar om ingångskyddet är tillräckligt?
Automotiva miljöer är ju, iaf vad jag förstått och läst mig till, inte direkt snälla mot komponenter. Med det i tanke så slängde jag på en zener med strömbegränsande resistor på MCU:ns ingång för att begränsa spänningen till högst ca 3.3V, vilket verkar fungera i simulation.
Bättre att visa med ett kretsschema, tänk på att komponenternas värden är bara placeholders just nu samt R2 agerar pull-down för signalen. Var lite osäker på att köra med en spänningsdelare då tanken är att insignalen borde gå att läsa av under uppstart av motor, vilket ger att 9V(Sjunker väl ca till detta när startmotorn går?)-15V borde registreras som högnivå vilket blir ett för stort spänningsspan för MCU:n med en 3.6k-1k spänningsdelare (9V=>~2V 15V=>~3.3V)
Dock så kanske det är ett bättre alternativ, men bör man då ha en spänningsbegränsande diod innan spänningsdelaren för optimal funktion?
Räcker denna lösning för att skydda MCU:ns ingångar eller är det något jag har missat?
Borde jag köra med TVS dioder istället för vanliga zener inom denna applikation?
Tackar på förhand!
Håller just nu på med ett projekt där jag behöver läsa av diverse 12V signaler såsom helljus å blinkers med en STM32:a och undrar om ingångskyddet är tillräckligt?
Automotiva miljöer är ju, iaf vad jag förstått och läst mig till, inte direkt snälla mot komponenter. Med det i tanke så slängde jag på en zener med strömbegränsande resistor på MCU:ns ingång för att begränsa spänningen till högst ca 3.3V, vilket verkar fungera i simulation.
Bättre att visa med ett kretsschema, tänk på att komponenternas värden är bara placeholders just nu samt R2 agerar pull-down för signalen. Var lite osäker på att köra med en spänningsdelare då tanken är att insignalen borde gå att läsa av under uppstart av motor, vilket ger att 9V(Sjunker väl ca till detta när startmotorn går?)-15V borde registreras som högnivå vilket blir ett för stort spänningsspan för MCU:n med en 3.6k-1k spänningsdelare (9V=>~2V 15V=>~3.3V)
Dock så kanske det är ett bättre alternativ, men bör man då ha en spänningsbegränsande diod innan spänningsdelaren för optimal funktion?
Räcker denna lösning för att skydda MCU:ns ingångar eller är det något jag har missat?
Borde jag köra med TVS dioder istället för vanliga zener inom denna applikation?
Tackar på förhand!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
-
- Inlägg: 7812
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Kollade på optokopplare förrut men hittade inga som var tillräckligt små (Ca 20 signaler som skall läsas av och har begränsat med yta på kretskortet), får ta å kolla omkring igen på digikey efter att de har tagit bort min ip adress från svartlistan... igen
Dock så kommer optokopplare inte fungera på de analoga signaler som skall läsas av men det löses senare.
Dock så kommer optokopplare inte fungera på de analoga signaler som skall läsas av men det löses senare.
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Sättet med zenerdiod är ganska OK - men R1 har ju förbenat lågt värde! Du behöver inte dra så jädra mycket ström i zenern.
En spänningsdelare skyddad av en zener är ganska OK - men ha en 100nF konding parallellt med zenern, då blir det bra.
Orsaken är att en zener inte är snabbaste komponent och spikar kan komma igenom litegrann. Med en keramisk konding dämpas dessa och saken är biff.
En spänningsdelare skyddad av en zener är ganska OK - men ha en 100nF konding parallellt med zenern, då blir det bra.
Orsaken är att en zener inte är snabbaste komponent och spikar kan komma igenom litegrann. Med en keramisk konding dämpas dessa och saken är biff.
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Som skrivet är ju att värderna i kretsschemat var placeholders och inte dem jag simulerade med, har ju inte ens valt zener diod ännu utöver 3.3V i Vz.
Kommer att lägga till en keram på din begäran Icecap , kommer sedan att räkna på allt och simulera när diod är vald (Kom igen nu DigiKey, ta bort mig från listan! ).
Kommer att lägga till en keram på din begäran Icecap , kommer sedan att räkna på allt och simulera när diod är vald (Kom igen nu DigiKey, ta bort mig från listan! ).
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Antar att det är för att jag missbrukar deras filter, lägger in request på request över flera flikar med olika komponentklasser vilket skapar väldigt mycke nätverkstrafik, botfilter som jag fastnar i.
Edit:
Borttagen från listan
Edit:
Borttagen från listan
- prototypen
- Inlägg: 11076
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Ju högohmigare du gör spänningsdelaren desto lägre ström behöver ingångsskyddet ta hand om.
I mina lösningar så sitter det ofta ett motstånd från delningen och till ingången på kretsen.
Om ingången på MCU tål 10 mA och seriemotståndet är på 100 kOhm så behövs det 1000 volt för att driva 10 mA på ingången.
Protte
I mina lösningar så sitter det ofta ett motstånd från delningen och till ingången på kretsen.
Om ingången på MCU tål 10 mA och seriemotståndet är på 100 kOhm så behövs det 1000 volt för att driva 10 mA på ingången.
Protte
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Prototypen: Jo precis! Har tänkt på att använda de inbyggda skydden i MCU:n men har blivit lite uppskrämd av att de inte är designade för kontinuerlig användning.
Har iallafall nu simulerat två olika typer av kretsar som åstadkommer vad jag är ute efter med signalen iaf.
Bägge kretsarna skyddar mot negativa spänningar och begränsar dem till -0.3V på MCU:ns ingång
Krets 1 beter sig precis som vad jag är ute efter signalmässigt, dock så flödar Ca 11.4mA vid 16V inspänning genom D1 p.g.a den låga resistansen hos R1. Detta ger ca 105mW av 300mW max tillåten spilleffekt hos D1, R1 får ca 100mW i spilleffekt, vilket är väldigt högt för en enda signal och speciellt om det skall finnas ca 20 stycken likadana kretsar bredvid varandra på ett kretskort. Däremot så tappar kretsen sin, relativt skarpa, karakteristik om R1 görs större, troligen så skulle en zener med lägre spänning återge karakteristiken samt minska spilleffekten genom D1, dock så kommer R1 värmeeffekt att öka. Tror det är lite av ett dead-end med denna krets.
Krets 2 bör jag egentligen ha simulerat med en spänningsdelare direkt på insignalen för att justera vart gränsen för logisk hög ligger, kommer göra det efter att jag skrivit detta inlägg. Vid 16V inspänning så är det endast 1.25mA genom R6 vilket ger endast 16mW i spilleffekt , kunde tyvärr inte få fram strömmen genom dioden (Är noob på SPICE) men detta är ju mycket bättre än krets 1. Så tror att jag kommer vidareutveckla krets 2 lite och sedan utsätta den för automotiva transienter och störningar (Hur man nu gör det på lämpligast sätt i SPICE? ).
Vill tacka till alla ovan som tagit sig tid att svar!
Har iallafall nu simulerat två olika typer av kretsar som åstadkommer vad jag är ute efter med signalen iaf.
Bägge kretsarna skyddar mot negativa spänningar och begränsar dem till -0.3V på MCU:ns ingång
Krets 1 beter sig precis som vad jag är ute efter signalmässigt, dock så flödar Ca 11.4mA vid 16V inspänning genom D1 p.g.a den låga resistansen hos R1. Detta ger ca 105mW av 300mW max tillåten spilleffekt hos D1, R1 får ca 100mW i spilleffekt, vilket är väldigt högt för en enda signal och speciellt om det skall finnas ca 20 stycken likadana kretsar bredvid varandra på ett kretskort. Däremot så tappar kretsen sin, relativt skarpa, karakteristik om R1 görs större, troligen så skulle en zener med lägre spänning återge karakteristiken samt minska spilleffekten genom D1, dock så kommer R1 värmeeffekt att öka. Tror det är lite av ett dead-end med denna krets.
Krets 2 bör jag egentligen ha simulerat med en spänningsdelare direkt på insignalen för att justera vart gränsen för logisk hög ligger, kommer göra det efter att jag skrivit detta inlägg. Vid 16V inspänning så är det endast 1.25mA genom R6 vilket ger endast 16mW i spilleffekt , kunde tyvärr inte få fram strömmen genom dioden (Är noob på SPICE) men detta är ju mycket bättre än krets 1. Så tror att jag kommer vidareutveckla krets 2 lite och sedan utsätta den för automotiva transienter och störningar (Hur man nu gör det på lämpligast sätt i SPICE? ).
Vill tacka till alla ovan som tagit sig tid att svar!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Version 2 har ett allvarligt problem som kanske inte kommer att betyda mycket i just detta projekt: En överspänning leds in till VCC och om inte systemet suger skapligt med ström fungerar VCC INTE som ett stabilt mothåll!
Vill det sig illa eldas hela systemet upp pga. överspänning på VCC.
Version 1 har jag använd i kommerciella produkter fast då med MYCKET mer vettiga värden på R1! De har aldrig fallerat.
Vill det sig illa eldas hela systemet upp pga. överspänning på VCC.
Version 1 har jag använd i kommerciella produkter fast då med MYCKET mer vettiga värden på R1! De har aldrig fallerat.
Senast redigerad av Icecap 9 januari 2021, 14:28:47, redigerad totalt 1 gång.
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
D2 skall bort, R5 likaså (gör ingen nytta annat än belastar insignalen).
D1 skall vara en 3.3 V zener.
D1 skall vara en 3.3 V zener.
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
För analoga signaler skulle jag använda någon form av spänningsdelning. Men för digitala (man har nominellt 12V eller 0V (aktiv driven låg eller öppen krets på ingången)) skulle jag nog titta på lösningen att låta insignalen gå till basen/gate på en npn/nmos transistor och med collector/drain in till mcu:n via ett motstånd mot mcu:ns matningsspänning. Då kan man ha en hög ingångsresistans och inte vara känslig mot att 12V varierar mycket. Borde gå att dimensionera att den tex klarar 6-25V (godtyckligt valt som exempel)
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Icecap: Ang. krets 2 så kommer såklart Vcc ha en kraftig 3.3V zener mellan sig och jord som ser till att rail:en håller sig stabil. Har efterkollat lite på olika open source projekt där b.la MegaSquirt använder sig av denna lösning för 12v ingångar.
ffredrik: R5 agerar pull-down, men bör kanske ha satt den innanför R6 vid MCU:n . Dock varför D1 är 9.1V är för att insignalen endast bör registreras som hög vid ca 9v och uppåt, skrev även att krets 2 inte var designad exakt som den ska då även den skall registreras som hög vid 9V och högre.
Nya krets 2
Antag att 3.3V railen har en kraftig 3.3V zener som tar hand om den strömmen som dumpas in i 3.3V railen vid klippning Säg att MCU:n uppfattar spänningar över 2.5v som hög signal, genom att justera R4 så kan nivån hos insignalen som uppfattas som hög regleras och ställas in till önskat värde. Dock så kanske jag borde tänka på att använda nån form av Schmitt trigger för hysteresis om det nu behöves. Jag har vart ganska otydlig med hur kretsen bör fungera, så ber om ursäkt. Kretsens funktion är att se till att 9V eller högre inspänning läses av som HÖG signal hos MCU:n, kretsen skall även agera överspänningsskydd.
ffredrik: R5 agerar pull-down, men bör kanske ha satt den innanför R6 vid MCU:n . Dock varför D1 är 9.1V är för att insignalen endast bör registreras som hög vid ca 9v och uppåt, skrev även att krets 2 inte var designad exakt som den ska då även den skall registreras som hög vid 9V och högre.
Nya krets 2
Antag att 3.3V railen har en kraftig 3.3V zener som tar hand om den strömmen som dumpas in i 3.3V railen vid klippning Säg att MCU:n uppfattar spänningar över 2.5v som hög signal, genom att justera R4 så kan nivån hos insignalen som uppfattas som hög regleras och ställas in till önskat värde. Dock så kanske jag borde tänka på att använda nån form av Schmitt trigger för hysteresis om det nu behöves. Jag har vart ganska otydlig med hur kretsen bör fungera, så ber om ursäkt. Kretsens funktion är att se till att 9V eller högre inspänning läses av som HÖG signal hos MCU:n, kretsen skall även agera överspänningsskydd.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- prototypen
- Inlägg: 11076
- Blev medlem: 6 augusti 2006, 13:25:04
- Ort: umeå
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
Hur snabb måste ingången vara? Typ tända halvljuset om det tar 100ms att registrera gör väl inget, men pratar vi ABS signaler är det någe annat.
Protte
Protte
-
- Inlägg: 18
- Blev medlem: 15 juni 2019, 09:50:59
Re: Ok sätt att föra in 12V signal till 3.3V MCU?
prototypen: precis som du skriver, är endast belysning jag läser av så ingången kan vara ganska så långsam.
Senast redigerad av InternetAthiest 9 januari 2021, 17:28:03, redigerad totalt 1 gång.