Connect with us

Input to a microcontroller

Discussion in 'Microcontrollers, Programming and IoT' started by flippineck, May 5, 2016.

Scroll to continue with content
  1. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    I'm messing around with a device here which incorporates a small one time programmable microcontroller.

    It's in a timeswitch, I posted about in the parts info subforum earlier: https://www.electronicspoint.com/threads/18-pin-dil-ic-sh69p-20c-1217-e-018du-n6sny-3-3.278876/

    The micro has four 4 bit ports.

    I can see the microprocessor has one of it's 4-bit ports (port C I think) wired sort of strangely (to my mind) across a potentiometer - bit 2 to one end of the pot, bit 1 to the wiper, bit 0 to the other end of the pot via 2 fixed resistors in series, the mid junction of which has a small capacitor to 0V. Bit 3 snakes off across the board, goes through a resistor and then into one of the terminals of a transistor, then I lost the trail on the PCB. But the track heads off in the opposite compass direction to the pot and the other 3 tracks.

    I can't get my head round this, I assume the micro is using port C to read the state of the pot somehow.. but I can't 'get' how it seems to be a digital ethos on one side (the chip) and an analog ethos on the other (the pot)

    The pot's supposed to be for fine-tuning the countdown period on the timer.

    The coarse adjustment for time setting, and mode control, is done by a bank of 4 dipswitches which feed into port B, this makes sense to me, one switch position supplies 0V to the port, the other supplies VSS via a pullup resistor - this is digital control that I'm used to & makes sense to me..

    How can a 3-terminal analog pot be feeding info into a 4 bit digital port?
     
    Last edited: May 5, 2016
  2. Colin Mitchell

    Colin Mitchell

    1,417
    312
    Aug 31, 2014
    The pot and cap are part of a sub-routine that charges the cap via the pot and looks to see when the input is HIGH. From this it will tell you where the wiper is.
     
  3. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    How clever is that! Thanks for explaining.

    It's been worth it just to find that out.. but I think I'm going to stop trying to modify this timer, it's going to be easier to design and build a whole new board to make it do what I want. i.e. Time for 24 rather than 2 hours max. Looks like there's no easy quick hack, I'd have to learn it's dialect of assembly, reverse engineer the code, reprogram a new chip.. probably a bit beyond me and not worth the time :(

    I was vaguely thinking, maybe I should try and come up with something that very quickly charges a big capacitor when you press the button, then leaks the charge away very slowly through a high value resistor. Try and monitor the voltage on the cap using a field effect transistor or something, something with a low base leakage current.

    the pressbutton seems to be some sort of capacitative / piezo touch activated affair. I'd have to interface to that somehow I guess as well. Or just have done with it and use a plain ordinary momentary pushbutton

    Guess I had best start a different thread for that, if I charge off down that road.

    Thanks for the info regards how it reads the pot. Well impressed with that!
     
    Last edited: May 6, 2016
  4. hevans1944

    hevans1944 Hop - AC8NS

    4,543
    2,116
    Jun 21, 2012
    This sounds like an ideal PIC project. What do ya want your timer thingy to DO after you push its button? Do you want to program the time interval? How accurate must the timer be? Does it sound an alarm or control an electrical circuit? If it controls a circuit, how much voltage and how much current? Resistive load or inductive load? EP PIC-NUTS wanna know!
     
  5. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    The overall project is to control a central heating system in the simplest and most basic manner possible.

    I'm a bit old and doddery lol so I'm not keen on complicated digital central heating programmers that I have to read the instruction manual for, everytime I want to change something.

    To this end I've removed the old digital programmer and replaced it with two mechanical timeswitches, the sort which have a ring of 15-minute segments round a clock face; you push the segment in for 'on' and have it out for 'off'.

    These timeswitches are wired to the boiler and the 3-port valve such that one timer controls the hot water to the radiators, and the other controls the hot water going up to heat the hot water storage cylinder.

    The boiler and 3 port valve system is wired such that a simple single SPST contact, open or close, is used to control central heating radiators on/off, whilst the hot water cylinder needs a SPDT set of contacts - one switched terminal is 240VAC live for 'hot water on', with the other terminal floating; and vice versa for 'hot water off'.

    The power flowing through these contacts is used to operate the motor of a standard 3 port central heating diverter valve; it's a 6 Watt motor. Not sure what kind of motor, so maybe it would have a higher power demand on startup?

    Also a proportion of the power flowing through these contacts is used to feed the boiler 'demand' signal input. The boilers (there are two) are http://www.acwilgar.co.uk/Boiler-Manual-PDF/Potterton/POTTERTON SUPRIMA 30,40,50,60,70,80.pdf

    The 'demand' signal input ('swl'/switch line) may potentially supply the full rated current to the boiler and pump; I could not discern any specific rating for that input in the manual.

    The pump is http://www.anchorpumps.com/grundfos...15-50-ups-15-60-buy-10-get-11th-free-98334549

    So I figure the potential current in the switch line might reach 6.205A (0.23A for the single pump; 6A for two boilers, 0.05A for the 3 port valve

    That's a potential maximum of 6.255A going through the control contacts in total, considering the 2 boilers, one pump and one diverter valve. I suspect less but I want to design for plenty of headroom?

    What I now want to do, is make a switch that when pressed, will activate the entire system for a choice of set timeout periods, without disturbing the existing mechanical clocks.

    Let's say, a panel with four momentary pushbuttons: one hour, half a day, a full day, five full days.

    You press the relevant button, and the entire system starts following the existing program set by the mechanical timers. (the mechanical timers' clocks are permanently powered so they're always keeping correct time)

    Once the timeout period is reached, no further heating is allowed to occur regardless of the state of the two timeswitches.

    To achieve this, I need to control one SPDT relay contact - see circuit diagram attached. It's going to be carrying the aforementioned 6.255A with a potentially mixed resistive and inductive load.

    Timeout accuracy doesn't have to be very tight at all. to put a figure on it let's say an accuracy of plus or minus 10 seconds in the hour.

    EXISTING
    existing.jpg

    PROPOSED
    proposed.jpg

    TRUTH TABLE
    truthtable.jpg
     
    Last edited: May 7, 2016
  6. hevans1944

    hevans1944 Hop - AC8NS

    4,543
    2,116
    Jun 21, 2012
    Very good explanation.

    In my own words:

    If one of the four buttons is momentarily pressed, a time interval begins, determined by which button was pressed. During this time interval, a relay is energized with SPDT contacts capable of switching a 240 V AC load. The contact switching load may be partly reactive, because of the pump motor, but it is mostly heater-resistive with an unknown surge current as the two boiler heaters warm up. You will determine an acceptable relay for this purpose and wire its contacts as shown on your sketch.

    While the relay remains actuated during the push-button selected time interval, everything operates the same as before you introduced the new relay circuit. When the selected time interval expires, the relay de-energizes, removing power to the CHTimer contacts and the HWTimer contacts, but maintaining power to the HW "Off" circuit. Thus the heating system is deactivated when the added relay is de-energized, but operates normally under control of the mechanical timers when the relay is energized..

    The only problem I see is operating the coil of the added relay with a suitable electronic timing circuit because you should probably select an industrial-grade relay with a 240 VAC coil. These will be available in a wide range of contact ratings. DPDT is most common, and the two sets of contacts can be paralleled. However this is simply for redundancy; it does not increase the contact rating because it is mechanically impossible for both sets of contacts to close or open simultaneously, which would be required to share the current load across both sets of contacts.. The contact rating of the two mechanical timers should serve as a guide to the contact rating you need for this extra relay. I would select a relay with at least a 10 A rating at 240 VAC.

    The relay you select should be socket-mounted for easy replacement should the contacts fail. You should keep a spare on hand against that eventuality. Appropriately insulated, small gauge, 240 VAC wiring must connect the relay coil to the electronic timer box with its four push-button switches. If possible, the relay should be installed along side the two mechanical timers to minimize the additional wiring. It could be installed in a separate panel box containing the four push-button switches and the timer electronics. In that case, it would be connected to the mechanical timer contacts with a 3-wire 240 VAC insulated cable. Either way, the electronics must switch 240 VAC power to the relay coil, so the coil wiring must have appropriate insulation for this purpose.

    I am not a big fan of bringing mains electricity onto a circuit board containing low-voltage "computer type" electronics. Whatever that electronics might be, it should be used to operate a low-voltage coil of an intermediate relay. SPST contacts on this intermediate relay would then switch 240 VAC power to the externally added (hopefully socket-mounted!) power relay you are adding. This limits the AC mains voltage to a tiny area of the electronics circuit board, carrying only a small current to a board-mounted intermediate relay's contacts.

    I mentioned a PIC microprocessor in post #4 and I still think this is an ideal solution. However PICs require circuit board construction, either a printed circuit or a veroboard prototype. Do you have the requisite assembly skills and, more important, an interest in assembling components for this project? There are other alternatives to using a PIC.

    Many hobbyists favor the Arduino for this kind of application. The Arduino Uno is especially attractive for beginners. An Arduino is an inexpensive microprocessor with a USB programming interface to a personal computer, either a laptop or desktop computer. Once programmed, the USB cable is disconnected and the Arduino operates "stand alone" from a program downloaded into its non-volatile program memory. It is easy to change the program during the design phase for debugging... programs almost never work properly the first time around! Arduinos (there are several versions available) are supplied on tiny circuit boards with provisions for making easy connections to external components. Power is usually provided from a 5 to 9 V "wall-wart" DC power supply capable of providing up to one ampere at five volts. Most Arduino boards have a 5 V regulator and can be operated from a 9 V battery for portable operation, so the wall-wart voltage output isn't at all fussy.

    One downside to using a microprocessor is programming. It is not an innate human ability to be able to program. Some people pick up on it more quickly than others. Some try it and give up. Not to worry, though; there are lots of folks here who excel at programming PICs and Arduinos and they will gladly help you with this project. I will even toss my hat into the ring to help as time allows.

    You should also consider "bells and whistles" for your push-button panel. At the very least, there should be an LED (light-emitting diode) mounted on the switch panel adjacent to or above each push-button switch. You can also purchase panel-mounted switches with the LED built into the switch housing. The LED will light up, under control of the microprocessor, to tell you which timer interval is running.

    There may be circumstances where you want to disable the timed interval and operate the heating system the same way as before, i.e., keep the added relay energized all the time. A fifth push-button and associated LED could be easily added for that purpose. Push-on/push-off operation.

    You may want to disable the heating system entirely, perhaps for troubleshooting the pump or boiler controller. This is not possible with your circuit, but such a "feature" could be easily implemented with a 3PST toggle switch wired in series with the CH "on", WH "off" and WH "on" wires. Sometimes a microprocessor isn't always the best solution.

    An optional, but very nice feature, would be a digital clock operating as a count-down timer that displays how much time is left in the currently running delay. LCD display modules are inexpensive and some require only three wires to interface to an Arduino Uno.

    So give all this some thought and tell up which way you want to go.

    Hop
     
  7. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    I'm really split on this!

    I started out with the basic idea, and thought it would be a very simple matter to find a suitable readymade 240V timeout switch on ebay - turns out this doesn't seem to be the case.

    Even if I could find a switch that had a long enough time delay (I'd settle for a single button that gave half a day per press), none of them seem to have SPDT contacts. They all seem to have just two terminals, 'live in' and 'switched live out'. I guess I could use an external relay in that circumstance, but as I say, switches with a very long timeout just don't seem to be available.

    So that covers the handyman 'get the job done as quickly and simply as possible' side of my personality.

    Then there's the other side..

    I do have all the construction skills necessary that you mentioned. I've never programmed an arduino however I do have some experience programming in other languages. I did have a wrangle with Z80 & 6502 assembly back in the day, found them a bit difficult but not impossible for me to understand with a bit of help.

    If I was going to start getting involved in such a depth of design, yes I definitely would end up going for the bells and whistles (whilst retaining the original design ethos of making the whole thing instantly and intuitively useable, without the use of any programming sheet or prior knowledge, by a completely non technical, possibly dimwitted user)

    When I'm not actively switched into my technical head, I actually AM that non-technical dimwitted user ;-)

    You mentioned time, and there's the rub. I really hate the fact, but right now, life is so full of timesink issues that I wouldn't be able to devote the attention necessary to such a project :-(

    Judging by the complete lack of really simple, yet effective, control systems on the existing market, maybe there'd be a sales niche for such a design.

    I've been involved in renting out domestic properties for some time & I've lost count of the number of tenants who have approached me to have standard digital heating programmers removed and replaced with nothing more than a mechanical stat and a mechanical timeswitch, so I know it's not just me that wants simplicity back.

    Of course designing a system for open sale on the open market would no doubt bring with it a whole new order of magnitude of regulatory hurdles to overcome!

    Going back to my handyman persona, could I do something very simple with a capacitor, resistor, relay and a transistor?
     
  8. hevans1944

    hevans1944 Hop - AC8NS

    4,543
    2,116
    Jun 21, 2012
    The simple push-button that charges up a capacitor which then turns on a field-effect insulated-gate transistor (very low leakage there!) that drives the coil of a relay is indeed a possible solution, one that you mentioned in post #3. Problem is, the leakage properties of a capacitor will probably make it very difficult to achieve accurate long delays, even if you choose a low-leakage polystyrene (PS), Teflon (PTFE), or polypropylene (PP) dielectric capacitor. Timing for 120 hours (5 days) to, say, 15 minutes accuracy will be very difficult. There is also the problem of obtaining a well-defined switching threshold for a single FET relay driver. Ideally, you would want some hysteresis in the switching function to prevent relay chatter and obtain a positive drop-out of the relay contacts when a certain threshold voltage on the capacitor is reached. The resistance associated with the capacitor discharge will be very large, even with several micro-farads of "timing" capacitance.

    If you plug in some numbers, say 10 μF and a 120 hours (432,000 seconds) and a one time-constant discharge interval (discharge to about 37% of original voltage) you will require a resistance of R = tc / 10 x 10^-6 = 432,000 / 0.000010 = 43,200,000,000 ohms! About 43 GΩ in other words. This probably exceeds the leakage resistance of whatever you mount the resistor and capacitor onto, even if you use a Teflon terminal support. And the leakage resistance will vary with environmental factors such as temperature, humidity, and "stuff" that collects on the insulated support terminals.

    I recall that I once had to clean an electrical, ceramic-insulated, vacuum feed-through every few months because it would accumulate a slightly conductive film on the ceramic, allowing a leakage current to flow across the feed-through. This current was indistinguishable from a very low-level (nano-ampere) ion current we were trying to measure, and it caused our actual ion-implant dose to be over-estimated by a considerable amount. Cleanliness is next to Godliness when it comes to high-impedance circuits.

    Of course you can use a lower drop-out threshold (possibly), say five time-constants or about 0.67% of the original capacitor voltage, which would allow you to reduce the discharge resistance to one-fifth of its value for one time constant for the same time interval to reach that lower level. And you could (possibly) increase the capacitor value to 100 μF (at great expense!) which would allow you to decrease the discharge resistance again by a factor of ten. But any way you look at it, a very large discharge resistance in the gig-ohm range is required for a 120 hour delay with any reasonable (affordable) value of low-leakage capacitor. Hence my original suggestion to take a digital approach to timing.

    @Colin Mitchell mentioned a simple method to "read" the wiper position of a pot using just one terminal on a microprocessor for input. This concept can be extended to reading which one of four (or five) push-button switches is pressed by placing different valued resistors in series with each switch. Personally, I would just purchase a microprocessor with enough inputs to dedicate one switch for each input, but the software solution does save some pins.

    At one time we had a really good person here (@KrisBlueNZ, deceased) who could whip out a project like this in less than a week, complete with a detailed explanation of how it works, an annotated schematic, a complete bill-of-materials (BOM), and a printed circuit board design... all on his own time and for free. Kris is sorely missed and no one has stepped up to take his place. There are plenty of people here with good capability, but not many of us have the time, myself included, to do what Kris did so well. This is a hobbyist forum, and members are more than willing to help those who help themselves. If you cannot do it yourself, perhaps a visit to one of the hundreds of "maker" forums will yield someone who can do it for you. And keep looking on the Internet for a solution. It has been my experience that the world has reached "critical mass" in terms of talent: if you can think of it, someone else has too, and all you have to do is find them. Yeah, it's a tall order even with dozens of search engines available.
     
    Last edited: May 8, 2016
  9. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    Accuracy isn't actually all that important - the main thing is that it does eventually drop out after a 'something like' while, to stop the continued use of heating when somebody leaves the property and forgets to turn the heating off.

    I guess I could label the pressbutton(s) 'creatively'.. instead of '12.0 hours', 'a day'. instead of '24.0 hours', 'a day and a night'..

    Maybe I could take a hybrid approach - retain the simplicity of largely analogue circuitry (the R, C & mosfet) but avoid the complexity of a full-blown microprocessor by counting multiple timing cycles using some kind of digital register built out of logic gates?

    I vaguely recall building something like this a long time ago - it was made out of 74LS logic chips IIRC and had a row of 8 LEDs. I think I might have used a 555 to do the clock maybe. It lit up the LEDs in binary, starting from 00000000 and counting sequentially up to all the 1's.

    Perhaps I could sort of connect a relay up to the highest bit of such a register..

    Would the accuracy improve by doing this, because I could use an RC combination that produced very short individual pulses?

    It probably wouldn't be so bad to use a different timing circuit, like the 555 even?

    Unfortunately I've long lost the design of the LED counter I made. Think I might even have cobbled it together on a breadboard 'following my nose' sort of thing.
     
  10. hevans1944

    hevans1944 Hop - AC8NS

    4,543
    2,116
    Jun 21, 2012
    Digital timers built from TTL components are ancient! I remember doing what you did, although I think I might have used BCD counters, seven-segment decoder/drivers, and seven-segment LED blocks. I used my favorite 120 Hz zero-crossing pulse circuit and scaled that down to 1 Hz pulses to increment the BCD counters. In any case, lots of wires to connect using wire-wrap sockets. IIRC, the 555 timer hadn't been invented yet and we were still using SN74xx series logic. The Texas Instruments TTL Data Book was my Bible for digital design back in the day. It was much, much, later that the other logic families, including low-power Schottky (SN74LSxxxx series) and CMOS became available. By then I was already into using microprocessors to replace discrete logic. So, yes, you could do this with discrete logic. The 555 isn't a very accurate timer, so you should probably use the 50 Hz power line frequency as your time base. You could set a D-type flip-flop latch when a button is pushed and then OR its Q output with one of the bits in your counter chain. When that particular count is reached it would de-energize the relay and reset the latch. If you want to get real fancy, you could decode the outputs and only accept a particular count as the terminator.

    Before you go to all the trouble of wiring up discrete logic, why not purchase an Arduino Uno kit and have a go at programming your time delays? Once you get a program that works reliably, it can be downloaded to cheaper and smaller Arduinos. I wouldn't bother with an LCD time=remaining display, unless you want one for your own personal pleasure. The tenants sure don't need that. Getting them to press just ONE button when they leave the house or flat or whatever it is they are renting will be a miracle. Oh, wait! They press a button when entering to turn the heat on. Later the heat goes off, perhaps twelve hours later. but it does go off... so the tenant HAS to press a button to turn the heat back on again. You can always add an LCD timer display later if you want. Get the buttons working first.

    The only thing you would need to do with an Arduino Uno is connect the push-button switches and a coil-driver for your relay. The built-in Arduino clock is accurate enough for your purposes. I can help you with the coil driver if you can provide coil specifications for whatever relay you buy... I need to know whether coil is AC or DC and the pull-in voltage. Make sure the relay has a continuous-duty rating because it will be energized for many hours while the tenants are getting comfortably cozy. I have several Arduino Uno microcomputers waiting for something to do, so I could probably breadboard something for you in my "spare time" and program it and test it. Wife allocates my "spare time" so don't expect quick results. Any of several dozen people here can also do the programming. It's a pretty simple application. You would just provide the hardware and connect everything, although I think you might like programming the Arduino. It uses a compiled version of the C language and there are lots of forums on the web to get you started, along with plenty of free help.

    So, what do you think? Discrete logic or Arduino?

    Hop
     
  11. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    Both.

    I looked up a 555 astable and counter - http://www.cheekytronics.com/Projects/12_bit_counter.html

    Tried plugging in some numbers & it looks like it'll be ideal for the immediate task.

    I'll use the highest four bits, from those I should be able to get 24h, 12h, 6h and 3h timings with a 300 microfarad and some 68k resistors on the 555 circuit. If I add a 10k pot in series with one of the R's, I can hopefully get some adjustment on the timing.

    Then I'll use your D-type flip flop suggestion to detect the count? Not sure how I'll actually wire this but it sounds sensible. I'm envisioning something like a small reed relay feeding a heavier duty SPDT to do the 240V grunt work.

    Time is tight, so many pressing humdrum things to do & not enough hours in the day. I think I can rig the above up quite quickly and painlessly to get my bills down right now. But in the long term I definitely fancy having a play with the Arduino. so I might order one purely as a 'plaything'

    I tried learning C once (it was pure original C using DJ Delorie's DJGPP DOS compiler) and I managed to write a half-decent 'pong' game for the PC with it, IIRC using embedded assembler to perform direct screen memory access. I found C doable, if a bit taxing on the brain. I lost the plot on pointers though.

    My favourite language is still BASIC. Wonder if anyone does a BASIC compiler for the Arduino?
     
  12. hevans1944

    hevans1944 Hop - AC8NS

    4,543
    2,116
    Jun 21, 2012
    It should be pretty simple to wire up a 555 and use it to clock a single 74HC4040, but I would not recommend that. With a single 12-bit counter, the maximum frequency division ratio is two to the twelfth power or 4096, but you don't get the full benefit of that. If you use the zero-to-one transition of bit 11 of the counter as your longest time interval, then it will become set on the 2048th clock pulse and remain set until the 4096th clock pulse. The 4096th clock pulse will cause the counter to "roll over" to all bits cleared to zero. Essentially, that last counter bit doesn't do much for you, except to get set when the first eleven bits roll over to zero.

    So, if you use the zero-to-one transition of bit 11 to represent 24 hours, this will occur after 2048 clock pulses when the counter changes from 0111 1111 1111 to 1000 0000 0000 on clock pulse 2048. The next clock pulse will advance the counter to 1000 0000 0001 and it will require 2047 additional clock pulses to "roll over" from 1111 1111 1111 to 0000 0000 0000.

    Since you are going to use the event of bit 11 transitioning from zero to one after 2048 clock pulses, you don't get the benefit of those additional 2048 counts in extending the time delay. Effectively, the bit 11 transition from zero to one occurs after 2048 input clock pulses. That means, if bit 11 is to represent a time-out after 24 hours = 86,400 seconds, then 2408 clock pulses must occur during the 24 hour interval and the time between pulses is 86,400 / 2048 = 42.2 seconds (about). That's not an impossibly long time for a 555 timer, so go ahead and try it.

    If you are unsatisfied with the accuracy or stability of the time delay from the 555, or if it tries your patience as you adjust its frequency to a period of 42.2 seconds between pulses, you can improve matters a bit by choosing a higher 555 frequency and put a "pre-scaler" between the 12-bit counter and 555 output. You will still need that one pulse every forty-two seconds (or thereabouts), but if you feed the 555 output as the clock input to another 12-bit counter, you can divide the 555 frequency by 4096 and obtain a square wave output of 21.1 seconds duration pulses with a cycle time of 42.2 seconds between pulses. This works out to a frequency of about 97 Hz from the 555. That is fast enough to not require an electrolytic 300 μF timing capacitor. And you could probably eliminate the 555 and use the 50 Hz power line zero-crossings to generate a 100 Hz clock, which after division by 4096, is probably "close enough" to serve as the clock for the second 12-bit counter. Added benefit: much simpler circuit, no adjustments necessary.

    The Arduino C/C++ compiler is part of the Arduino program development environment that runs on your PC. The C/C++ version that Arduino implements is a sub-set of the two languages with pre-defined functions suitable for the hardware interfaces. It isn't hard to learn at all and there are libraries of functions to support various Arduino "shields" so you can get started right away. Arduino programs are called "sketches" and it is difficult to do any of the usual things you can do in an environment that is supported by an operating system. No multi-tasking, for example. Your "sketch" program is just one loop that repeats forever. I am sure there are some really complicated applications written for Arduino to allow character display and touch response on LCD screens for example, but I haven't gone there yet. There is a huge worldwide user community and forums where you can get help. Best suggestion: buy the Arduino Uno and go from there. Most folks start out by learning how to blink the LED conveniently included on the Uno board and pre-wired to a microprocessor port.

    There are BASIC compilers written for Arduino. I haven't gone there and suggest you don't go there either. But if you insist, here is a page with links to third-party BASIC compilers. I don't think most Arduino memory is large enough to hold anything bigger than a Tiny BASIC interpreter and still have any room left over for user-written programs, but I haven't tried that either. I would take a stab at using the free C/C++ programming environment first before branching out into BASIC.

    My microprocessor of choice for embedded computing projects is the PIC series manufactured by Microchip Incorporated. You can use free C compilers with that if your processor has enough on-board program memory space, but I prefer to program these devices in assembly. All the processors in the series use a simple RISC (Reduced Instruction Set Computer) instruction set, so you have to jump through more hoops to get things done compared to some other microprocessors. The up-side is most instructions execute in one instruction cycle and the little buggers are fast. You can get a full sales pitch by visiting the Microchip web site. Down-side is, like the Arduino, your program is just one big loop that executes forever without benefit of an operating system to watch over things and make access to peripherals easy. But, hey, it's an embedded computer programmed for a specific purpose. You want versatility, use a dedicated desk-top (or lap-top) PC as an embedded system.

    And, yes, definitely use a reed-relay between your circuit and the real world. Maybe even drive the reed relay coil through an optical isolator if you want bullet-proof isolation.

    Hop
     
  13. flippineck

    flippineck

    269
    9
    Sep 8, 2013
    Having read so far, and no further, let me quote and reply:

    I properly lol'd :)

    I'll continue reading.
     
Ask a Question
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.
Electronics Point Logo
Continue to site
Quote of the day

-