arduino switch controller

20,499

Circuit Image

The core of the switch controller is an Arduino Nano microcontroller, which will serve as the interface between the dashboard switches, wireless steering wheel buttons, and the vehicle's lighting, indicators, windscreen wipers, and DigiDash2 GPS stopwatch. This setup facilitates features like self-canceling indicators, intermittent wiping, and automatic wiping, along with the ability to use multiple button presses to select sidelight/headlight or wiper speeds—essentially allowing for any logic desired, as it is entirely software-controlled. The design eliminates the need for any electronic hazard flasher or ballast resistors for LED lights, as the MOSFET should manage these functions. A wiring schematic for the controller has been initiated, marking the first use of MOSFETs, which presents a learning opportunity. The next steps involve mounting the voltage regulator and input/output resistors on a stripboard, casing the assembly, and attaching the transistors/MOSFETs to a large heatsink positioned beneath the scuttle while addressing the wiring modifications to the Westfield loom.

Low-side switching on the wiper motor has been identified as a straightforward approach since the ground is accessible, resulting in a simpler circuit with affordable high-current N-channel MOSFETs. Testing of the circuits and coding is anticipated for the upcoming weekend. Any discrepancies found will prompt updates to the schematic for the benefit of others considering similar implementations. Recent modifications ensure that hazard and sidelight circuits remain operational even when the ignition is off; the Arduino effectively replaces the indicator switch and controls the dipped and main beam relay. A reed switch with a single magnet has been integrated into the steering column to facilitate indicator cancellation. A single press of the indicator will activate it for up to 15 seconds, provided the steering does not move. If the steering returns to the straight position, the system will wait 3 seconds before canceling the indicator. This feature is particularly useful for navigating roundabouts or side turns.

Alternatively, pressing the button again will deactivate the indicator, while pressing the opposite side button will switch the direction. The design allows for the creation of a self-canceling indicator controller that could outperform commercially available options. The initial plan to utilize the hazard feed with a diode has been revised; a decision was made to hardwire the hazards in a conventional manner while using the standard Lucas switch live indicator feed to supply the MOSFETs. This configuration ensures that the hazard lights remain functional even if the Arduino experiences a failure.

For the sidelight, a latching changeover Durite relay has been hardwired to toggle on/off with a momentary switch, although a latching switch with a standard relay could be a more cost-effective option. The 12V relay changeover is sensed (HIGH when sidelights are off, LOW when on) to control the cycling of headlights. With the ignition off, the sidelight toggles on/off, while with the ignition on, the sequence changes to side+head/off/side/off/side+head/off, etc. When the headlights are activated, the main beam latches on or off with each button press; otherwise, it functions as a one-second flash. The system operates efficiently, taking approximately 2 seconds to boot after ignition is turned on. All necessary diodes and resistors for the Savage lights have been included to ensure proper functionality. It is suggested that the system be powered from a switched live, which would inhibit hazard operation unless the ignition is on. To address this, a double gang relay could be implemented to provide a secondary switched live, ensuring that hazards remain operational at all times. Future revisions will consider the car's high-side switching, necessitating a transition from N-type to P-type MOSFETs. Further developments are anticipated to enhance the steering wheel switch setup.The heart of the switch controller is an Arduino Nano micro-controller - this is going to be the interface between the dashboard switches, wireless steering wheel buttons and the car`s lighting, indicators, windscreen wipers and DigiDash2 GPS stopwatch. This should make it easy to have self-cancelling indicators, intermittent wipe, auto wipe on wa sh, plus can use multiple button presses to choose sidelight/ headlight or wiper speeds - any logic you like, really since its all software controlled. Also removes the need for any electronic hazard flasher or ballast resistors with LED lights, as the MOSFET should handle it all.

I`ve started on the wiring schematic for the controller - first time I`ve used MOSFETS, so should be interesting - any electronics enthusiasts please feel free to critique. Next step is to mount the voltage regulator and input/ output resistors on a stripboard and get the thing cased up, then put the transistors/ MOSFETS on a large heatsink that will attach beneath the scuttle somewhere and sort out the wiring mods to the Westield loom.

downloads: 103 I realised that it would be easy to use low-side switching on the wiper motor as the ground is accessible - the circuit is simpler and high current N-channel MOSFET`s are cheap. I`m going to start testing the circuits and writing the code this weekend hopefully. If I find anything wrong, I`ll update the schematic in case anyone else plans to use it ;-) 29/12/13 Finally finished!

I made a few changes to keep hazard and sidelight circuits working with the ignition off- the Arduino effectively just replaces the indicator switch and controls dipped and main beam relay. I also added a reed switch with single magnet on the steering column to cancel the indicators. So a single indicator press will switch on for up to 15 sec if the steering doesn`t move, but if the steering returns to straight ahead then I wait 3 secs and cancel.

This should work well for roundabouts or side turns. Otherwise, pressing the button again will turn off, or pressing the other side button will switch direction. It would be really easy (and cheap) to just make a self cancelling indicator controller better than any you can buy using the same method - perhaps I should draw a kit up I had planned to use the hazard feed with diode as shown on the schematic earlier, but in the end decided it would be easier and safer to hard wire the hazards as `normal` but then use the normal `Lucus switch` live indicator feed to supply the Mosfets.

This means that even if the Arduino fails, the hazards still work. For the sidelight, I`ve hardwired it with a latching changeover Durite relay, so it always toggles on/off/on/off/on/off with a savage momentary switch (could also have used a latching switch with a standard relay which is cheaper). Then I sense the 12V relay changeover (so HIGH when sidelights off, LOW when on) and use this to cycle headlights on and off.

So with ignition off you get sidelight on/off/on/off, but with ignition on you get side+head/off/side/off/side+head/off etc. If headlights are on then main beam latches on or off with each button press, otherwise main beam is just a 1s flash.

Seems to work well. It`s working perfectly takes about 2 seconds to boot from ignition on, which is fine. I`ve added all the diodes and resistors for the Savage lights so they all work nicely too. I`m guessing it would be fed from a switched live. If so then you won`t have any hazards unless the ignition is on. How about if you make the relay switch double gang (think that`s what it`s called) to provide a secondary switched live so you would always have hazards I was too busy drawing pretty pictures to think about how to fit this - of course the car wiring is all high-side switched, so I need to change the N-type MOSFETS to P-type. Version 2 on it`s way. Just seen this blog I`m well impressed I was thinking about making steering wheel switch setup bu 🔗 External reference




Warning: include(partials/cookie-banner.php): Failed to open stream: Permission denied in /var/www/html/nextgr/view-circuit.php on line 713

Warning: include(): Failed opening 'partials/cookie-banner.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/nextgr/view-circuit.php on line 713