A minor code revision as I slowly get everything working properly. I am adding new modules as I need them for other projects.
The microprocessor on a GenPIC PCB assemblyThe latest GenPIC deployed will be a coolant valve controller that allows remote control of some glycol valves in the AO bench. It is a pretty simple device, just four relays with some automatic timing rules and a serial control interface.
In the process I added support for the service connectors including parallel and simple serial modules to the GenPIC code base, may as well release it. Thus you get code release 0.2…
Next up will probably be SD card support, I have a project that needs to be finished requiring some reasonable data storage. Just ordered a few micro-SD card breakout boards from SparkFun
Hardly a week goes by without some little padded envelopes in my mailbox. 16×2 LCD character displays, 74HCT541 IC’s, 6mm encoders, some 10mm spirit levels, a couple more ESP-01 modules, and that is just this last month. Living on an island in the middle of the Pacific, there is no place I can buy electronic components. I must order everything.
Little Padded Envelopes from ChinaThose envelopes often arrive from places like Hong Kong and Shenzen, China. I find them on my desk where Deb just drops the latest little shipment from the other side of the planet.
The surreal part of this is that it is even conceivable that it would be cost effective to buy components from halfway around the globe like this. Not only is it affordable, but it is easy. It is easy to locate the correct components , it is easy to pay for the items, and it is easy to ship the parts across oceans.
Just a few years ago, buying products like this would have indeed been an insurmountable challenge, now it is routine. The internet and electronic storefronts like eBay that make shopping easy.
Electronic payment networks, notably PayPal, that make payment easy. And a global shipping network capable of getting those little padded envelopes to the correct location. For anyone familiar with history these networks are simply stunning in their capability, something inconceivable even a few decades ago.
Some would question the quality of components from China. You do need to be careful, but unlike cheap consumer goods, electronics components are usually quite acceptable in quality. I have had very little trouble ordering from Asia, the items perform as advertised.
I would probably not order from China if building life support equipment. For my littleelectronicsprojects the stuff works. Just check the seller’s ratings and record, then press ‘Buy it Now’.
A pile of RadioShack components purchased at the local closing sale.Our local RadioShack has survived several rounds of store closures as the chain has moved in and out of bankruptcy court. Time has finally run out for the store and it is liquidating the stock and will close by the end of the month.
I have commented on my view on RadioShack before. As an electronic hobbyist I have mixed feelings about RadioShack. In my younger years it was a decent place to buy electronic components. Some of the early computers I learned on were RadioShack products like the TRS-80 and Tandy 1000. I even worked as a RadioShack sales clerk one summer during high school.
How do you power a device that must stay on through an event that may cause a power outage? Battery backup of course. But that answer leads to whole new level of complications. There must be a circuit in place to allow power to be drawn from the battery or the power supply. The proper battery technology should be chosen. You need a another circuit to care for the battery, allowing for very long term reliability. Long term? Years.
A 6V lead-acid battery charger based on the venerable LM555.A good answer for the battery technology is sealed lead-acid. A properly used lead-acid battery should last a decade or more while providing power to operate for over a day. Lead-acid may not be a good choice for a portable device where weight and size are the primary considerations. But for a stationary application this venerable technology is a good choice.
What about the charge circuit? A simple charger that can fully charge the battery, but not overcharge the battery is needed. In the case of lead-acid charging is usually accomplished by charging to a chosen voltage before shutting off or lower the voltage to a safe lower value called a “float charge”.
I took a break from working with a “big” microcontroller to work with a little one. The PIC12C671 is definitely little when compared with the PIC18F66K80 I am using in the GenPIC utility PCB. With less than 2k of program space and a mere 128 bytes of RAM it is definitely limited. Consider that the chip only has eight pins, two of which are power and ground, leaving six I/O pins to get the job done. No problem, I only need two I/O pins for this task and that few bytes of RAM is more than enough!
A simple heater using a bang-bang controller.This project is pretty basic… A bang-bang heater controller. This simple form of controller simply turns on and off as the temperature (or some other controlled parameter) goes up and down, there is no attempt to vary the output, all or nothing. Bang on, bang off, or simply a bang-bang controller as it is known in the trade.
A bang-bang controller is inherently reliable and stable because it uses two different control setpoints, a high and a low. Because these control points are separated by a large margin, called hysteresis, the controller will not oscillate or rapidly turn on and off. In this case the heater will not turn on until the temperature falls below 10°C and will not turn back off until the temperature rises above 15°C. That five degree margin is called hysteresis, and ensures a good period of time between on and off.
I have had hardware for a while now, it is about time I release some firmware that actually runs it.
The development setup in use generating the first software release for the GenPIC utility PCBHere it is!
The first GenPIC code revision is a test and demonstration release. It contains support for one serial port, an LCD character display, user input including the encoder and pushbuttons, the indicator LED’s, timer generation, analog input including onboard temperature readout.
Also included is a serial command interpreter implementing a serial interface usable with any serial terminal. There is also a user interface system with a state setup that provides multiple input screens. This should handle a wide array of basic control capabilities, either using the serial port or through using the LCD screen and the encoder.
The code allows you to exercise many of the basic functions of the hardware and provide a framework on which a real application can be built.
It works, it runs, it looks fairly good. Now time to make something useful with it…
The rotary encoder is a popular input device for many microcontroller devices. A knob that can be used to increase or decrease a setting with a nice tactile click for each increment. You can even get an integral pushbutton, just rotate for the setting then press the same knob to enter. With some clever programming you can create a one device user interface using only the encoder.
The development setup in use generating the first software release for the GenPIC utility PCB
I have integrated a rotary encoder in the GenPIC utility board. With the combination of an LCD display and the rotary encoder you have all the ingredients for a functional user interface arranged neatly for a panel mount unit.
In the past I have simply set an interrupt to fire on the edge of one channel, then sampled the opposite channel to detect the direction. With the addition of a small delay to debounce the result. This worked well in previous devices, but this time I encountered trouble, the direction sampling was erratic, the value going up when it should have gone down and vice-versa.
Breaking out my logic analyser I found out why, this particular encoder proved to be somewhat noisier than I had seen in the past, with notable periods of bouncing signals.
Over the years I have hand wired so many microcontroller PCB’s. Along with my own projects for myself there are more than a dozen of my little microcontroller devices at work about the observatory. The OSIRIS IR calibration source, the Keck 2 dome inclinometers, a precipitation sensor interface, the Keck 1 AO electronic vault temperature sensors, the weather mast fan and shelter controller, the list goes on. Anyplace a bit of electronic intelligence is needed for the task.
A PCB assembly in layoutOf course the challenge is that each of these controllers has been hand wired and built for a specific task. This takes a few hours of running little wires on a perfboard. And while I enjoy such wiring, it does make the task take notably longer.
While a couple of my microcontroller designs have been laid out on proper circuit cards, like the SciMeasure camera exposure controllers, I have never laid out a general purpose microcontroller PCB. This is not for lack of thinking about it, so many times I have considered this could be so much easier if I could only invest a little time in a layout.
I have been messing about with electronic circuitry for almost four decades. I recently came across an early example of my work. The device is a digital event counter built around classic 74xx series logic. A chain of 74190 decade counters feed a set of 7447 decoder drivers and seven segment LED displays. A plastic project case with switches and connectors reminds me I have been building little devices for a very long time.
A digital event counter built when I was fifteen years old.In some ways the unit is very similar to one of my more recent builds. Perfboard and point-to-point wiring are still standard construction techniques. The technology may have changed across the years, becoming far more complex, but some parts have remained the same.