Variable pulse switching - 555, Arduino, or something else?

Thread Starter

Rich:-)

Joined Oct 14, 2016
50
This is to regulate the heat level of the heated seat on my motorcycle.

It is controlled via a momentary switch so when first powered on it is in standby, push once is low, push again high, push again standby.
High is useful to get it up to temp quickly but once there both low & high are too hot.
I appreciate that direct control of the heating element would be best but it is sealed inside a module that is within the seat, so the only non-destructive option I have is to automate the switching.

What's needed (I think) is a form of slow 3 stage PWM.
I'd need a small positive pulse, just long enough to make a relay act like the momentary switch (1 sec), then a delay of maybe 1-10 minutes (this should be variable), then another two 1 second pulses to put the heater back into standby.

So.. is it time for me to learn Arduino or could this be achieved with a 555?

Many thanks, Rich.
 

DickCappels

Joined Aug 21, 2008
10,152
If you are familiar with Arduino or another microcontroller that might be the fastest path to a solution. If not, doing it with one or more NE555 and a little logic would get you there much faster than learning a microcontroller development platform.

When shopping for a really, take a look at contact life and get an idea whether a relay is appropriate for or whether you would be better off using a MOSFET, and insulated gate bipolar transistor or other semiconductor switch.
 

jiggermole

Joined Jul 29, 2016
161
you don't necessarily have to learn arduino. If you're familiar with python, there are a number of SAMD21 based arduino-like boards out there that support micropython. Plug them in and they appear to the computer as a very small external thumb drive with a main.py text file to edit to make your program. It kind of depends what you're comfortable with. Bug nest a 555 and some components in there, or bug nest a relay and an arduino-clone in it. Both will get you where you want to go.
I think for their application a signal relay would be fine. Probably way less than the 100,000 cycle life time of most relays i've seen.
 

Thread Starter

Rich:-)

Joined Oct 14, 2016
50
Thanks for the fast replies.
I already have some signal relays so one of those is what I was planning to use. The seat doesn't get that much use so I doubt relay contact life would be too much of an issue.

I am more comfortable with components than I am with programming. I have not yet used an Arduino (or any other microcontroller) and I have no experience with python.

I am keen to learn Arduino so maybe I should make this a winter project.
I think in the mean time I'll install a circuit sim package I have (somewhere) and play around with 555's and some logic to see how that goes.

Many thanks.
 

AnalogKid

Joined Aug 1, 2013
10,987
10 minutes is a looooong time for a 555 or any other R-C timer approach. For that long a period, the capacitor charging current is so low that it might be greater than the cap's leakage current.

A common (all-hardware) approach is to use a CD4060. This is an oscillator and divider in one package. For an equivalent time period, the size of the timing capacitor is reduced by over 8000:1 compared to a 555. Note that it is not a direct 555 replacement, and the circuit needs a few supporting components to do what you want.

Separate from that is the double-pulse maker at the end of the timing cycle. This could be two 555's, but another way is to gate the outputs of the 4060 into a double-pulse signal for the relay driver.

For this circuit, the momentary switch is replaced by a non-momentary, SPST switch (toggle, rocker, slide, whatever). Is this the pattern:

1. Power ON - Power-On-Reset (POR) of the counter and a single pulse to the output relay driver.

2. Wait - variable delay period. The period is changed by adjust one of the resistors in the oscillator circuit.

3. Double pulse - After 8192 counts, two constant width pulses to the relay driver no matter how long the delay is.

4. Idle - circuit parks itself no matter how long power is applied

5. Reset/Restart - Remove power to the circuit to reset it. Re-apply power to restart it.

? ? ?

A minor issue is that the time between the double pulses will vary with the delay time adjustment. For example, the two 1-second output pulses (after the delay period) could vary between 1 second apart and 10 seconds apart. This is because the time interval between the pulses is a fixed ratio of the overall delay period.

No schematic yet, but I think we can get there with one CD4060 and one CD4093 quad NAND gate.

ak
 
Last edited:

Thread Starter

Rich:-)

Joined Oct 14, 2016
50
For this circuit, the momentary switch is replaced by a non-momentary, SPST switch (toggle, rocker, slide, whatever). Is this the pattern:

1. Power ON - Power-On-Reset (POR) of the counter and a single pulse to the output relay driver.

2. Wait - variable delay period. The period is changed by adjust one of the resistors in the oscillator circuit.

3. Double pulse - After 8192 counts, two constant width pulses to the relay driver no matter how long the delay is.

4. Idle - circuit parks itself no matter how long power is applied

5. Reset/Restart - Remove power to the circuit to reset it. Re-apply power to restart it.
Your list has helped me clarify the operation process required, it is as below.

1. Power ON - Power-On-Reset (POR) of the counter and a single pulse to the output relay driver.

2. Wait - variable delay period. The period is changed by adjust one of the resistors in the oscillator circuit.

3. Double pulse - After 8192 counts, two constant width pulses to the relay driver no matter how long the delay is.

4. Wait - variable delay period (the period can be the same as step 2).

5. Single pulse to the output relay driver to restart the low heat again.

6. Repeat from step 2.
 
Last edited:

Thread Starter

Rich:-)

Joined Oct 14, 2016
50
Just a small update... after much deliberation I've bought an Arduino Nano board.

After weighing up the pros & cons of a hardware solution I decided I should just bite the bullet and learn to program an Arduino. It's something I've wanted to do for a few years now and having an actual project in mind will motivate me to learn it.
Also the Arduino should make it easier to add functionality later.

If I'm not successful with this I'll revert back to the hardware option but for now I'm going to focus on the Arduino route.
Many thanks to all for replying and helping me along this path.
 
Top