Drie koelcircuits met pompen, kleppen, kachel met blower, elektrische verwarming op hoogspanning, airco met z’n blowers, dubbele CAN-BUS en nog veel meer. De auto komt uiteindelijk bomvol te zitten met elektronica. Een van de eerste blogposts was de succesvolle aansturing van de Pierburg CWA50 pomp met Arduino in februari 2017, daarna in mei 2018 de aansturing van de kachel ventilatie, in oktober 2018 de OLED schermpjes in de snelheidsmeter en in februari 2019 de aansturing van de koelsysteem kleppen. Verder heb ik daar nog niet veel over geschreven, maar is het wel voortdurend verder ontwikkeld met dank aan Erik Ciesluk voor alle ondersteuning hierbij!

Het schema ontwikkelde zich ook stap voor stap.

Arduino

Steeds kwamen er weer nieuwe componenten en functies bij. Initieel had ik gekozen voor de Arduino Mega als microcontroller met name vanwege het grote aantal ingangen en uitgangen. Ik kreeg echter de tip om eens naar de Teensy 3.6 te kijken. Die had ook veel ingangen en uitgangen, is snel en had CAN-BUS onboard.

Switch to Teensy 3.6

Dat is geen 100% Arduino board, maar een Arduino compatibel boord. De functies die ik tot dan toe ontwikkeld had, waren ook op de Teensy te gebruiken/implementeren door herschrijven van de code dus ben ik overgestapt.

Gate driver

Omdat de Teensy 3.3V logica heeft en de Arduino Mega 5V veranderde er wel het nodige. Zo is opeens voor aansturing van alle mosfets een gate driver nodig.

Gate driver

En zo stap voor stap ben ik weer een nieuwe versie van het schema gaan tekenen.

New Teensy schematic

Op een gegeven moment eens een overzicht gemaakt van het aantal connecties: 97!

97 connecties

Dat roept dus wel de vraag op, hoe ga ik dat allemaal netjes aangesloten krijgen. Ik heb hiertoe een aantal verschillende connectoren vergeleken.

  • TE Ampseal
  • TE Superseal
  • Molex CMC/CMX
  • TE Econoseal 070
  • Deutsch DT
  • Deutsch DTM
  • Molex MX150 34830 Series

Om tot een keuze te komen heb ik de volgende criteria gehanteerd:

  1. Aantal beschikbare pin variaties
  2. Toegestane amperages
  3. Bruikbare draaddiktes
  4. Kosten van officieel krimp gereedschap

Uiteindelijk heb ik gekozen voor de TE Ampseal connector.

TE Ampseal connector

Die is beschikbaar in 8, 14, 23 en 35 pins met zowel horizontale als verticale chassis delen voor de printplaat. Maximale stroom is 8 ampère bij gebruik van tin contacten en zelfs 17 ampère in combinatie met vergulde. De krimp pinnen zijn er voor draad van 0,5 tot 1,25 mm2. Voor de CAN-BUS en bijvoorbeeld de bedrading naar de OLED schermpjes is 0,5 mm2 wat aan te dikke kant, maar dat kan op zich geen kwaad.

Dus daarna begon de puzzel van welke connector combinaties en welke functie globaal waar.

Pinout keuzes

Het werd uiteindelijk twee maal een 35 pins, een 23 pins en een 14 pins.

Praktijktests schakelingen en stroom

Daarna werd het tijd om nog wat meer praktijktests te doen. Ondermeer de vraag ‘Hoeveel stroom trekt de fan nu echt?’

Controller en battery fan 2.9A

Controller / batterijen fan trekt 2,9A

Motor fan 2.7A

Motor fan trekt 2,7A

En het schakelen van de fans, 12V leds en nog diverse andere zaken doe ik ook met de microcontroller. Samen met mijn zoon zo’n “12V schakelblokje” opgebouwd op een experimenteerprint.

Gate driver test met Sven

Helaas leidde dat nog niet tot het gewenste resultaat en bleef het 12V accu symbool ledje aan.

Bleek dat ik de weerstand vergeten was in de pullup schakeling en daar gewoon een draadje had gebruikt..

Pullup 0h fail

Nadat ik dat had aangepast werkte het!

De blowers zijn een iets ingewikkeldere 12V aansturing. Die van de airco en kachel wil ik onafhankelijk van elkaar traploos kunnen regelen. Dit doe ik met een PWM regeling met aangepaste frequentie zodat je geen fluittoon hoort. Dit werkte al op de Arduino Mega, maar nu ook op de Teensy.

En zo begon het schema stap voor stap steeds completer te worden.

Schema aansturing randapparatuur

Nog niet alles liep helemaal vlekkeloos, met name rondom de blowers dus even een avondje naar Erik. Hij heeft me geholpen met het opdoen van alle kennis rondom elektronica om dit zo te kunnen maken.

Een aantal metingen met zijn oscilloscoop wezen uit dat er ondanks de blusdiode toch hoge spanningspieken veroorzaakt werden door de blower. Een Schottky diode in plaats van een gewone zou hier uitkomst kunnen bieden.

Scope met Erik

Hardware ontwerp

Daarna begonnen toch steeds meer puzzelstukje op hun plaats te vallen. Daarom een eerste slag gemaakt met een indeling voor de maatwerk printplaat in Onshape. Ik wil het laten ontwerpen van de printplaat uitbesteden, maar de beschikbare ruimte is krap dus daar hoort een goede briefing bij.

Printplaat schets in Onshape

Van de meeste componenten zijn datasheets beschikbaar met alle maten, maar niet van alle. Zo gebruik ik een kant en klare watchdog module. Deze controleert of de microcontroller niet is vastgelopen en mocht dat toch het geval zijn, reset hij deze. Die ga ik op de kop inprikken op de printplaat.

Watchdog footprint

Daarmee staan de eerste componenten er.

Globale print

Dus werd het tijd om te controleren of de beoogde maten en indeling inderdaad wel zou passen in de auto. Tijd dus voor een mockup van karton.

Mockup behuizing

Verder testen en ontwikkelen functionaliteiten

Eerder had ik een klein OLED schermpje voor integratie in de snelheidsmeter aan de praat met de Arduino Mega. Dit moest ook nog omgezet worden naar de Teensy.

Praktijktest OLED helderheid

En ook dat werkte uiteindelijk. Ik gebruik hiervoor de U8G2 of U8x8 bibliotheek geschreven door Oliver Kraus.

Teensy OLED

Die bibliotheek had ook een functie om de helderheid van het scherm aan te passen. Dit zou de controller van het scherm ook moeten ondersteunen, maar helaas werkte dit niet.

Dan maar een klein stukje ruiten tint folie erop plakken om hem wat minder fel te maken.

PWM aansturing pomp en klep

Analoog aan de variabele snelheid aansturing van de blowers wil ik ook de pompen van de motor en batterijen koeling dynamisch kunnen regelen. De Pierburg CWA50 pompen die ik hiervoor gebruik hebben hiervoor een PWM signaal aansluiting. Verder wil ik met de microcontroller ook een klep aansturen. Dus maar weer een stukje code geschreven en getest.

Arduino IDE Pump control

Helaas had dit nog niet direct het gewenste resultaat. De pomp draaide gewoon voluit en de klep veranderde niet van positie.

Pomp testen met Sven en Jiri

Dus maar weer even van het begin af aan opbouwen met alle componenten op een experimenteer bord.

Breadbord leegmaken

Inmiddels had ik wel een LabNation PC scope aangeschaft waardoor ik net als bij Erik de signalen kon analyseren om te kijken wat er wel en niet goed ging.

Labnation scope

En daarmee bovendien dit soort plaatje maken van de piekstromen rondom de blower (waardoor duidelijk werd dat het gebruik van een Schottky diode wel helpt).

Labnation output

Uiteindelijk lukte het en werkte zowel de dynamische aansturing van de pomp als de aansturing van de klep. In onderstaand filmpje loopt de pomp snelheid vanzelf op en af en verandert de klep positie door een druk op een knop.

Daarmee had ik een van de laatste puzzelstukjes getest en was m’n input voor de ontwerper van de printplaat gereed:

Toen was het een kwestie van opleveren en afwachten.