Embedded Electronics HW/SW Engineer with expertise in Hardware & Software including PCB design and Analysis, firmware development and Android development apart from causual web-development (wordpress & Laravel) and to some extent photography.
The simplest and easiest way to charge a battery with a solar panel is to connect the panel directly to the battery. Assuming the panel has a diode to prevent energy from flowing through it from the battery when there’s no sunlight. This is fairly common but not very efficient. [Debasish Dutta] has built a charge controller that addresses the inefficiencies of such a system though, and was able to implement maximum power point tracking using an Arduino.
Maximum power point tracking (MPPT) is a method that uses PWM and a special DC-DC converter to match the impedance of the solar panel to the battery. This means that more energy can be harvested from the panel than would otherwise be available. The circuit is placed in between the panel and the battery and regulates the output voltage of the panel so it matches the voltage on the battery more closely. [Debasish] reports that an efficiency gain of 30-40% can be made with this particular design.
This device has a few bells and whistles as well, including the ability to log data over WiFi, an LCD display to report the status of the panel, battery, and controller, and can charge USB devices. This would be a great addition to any solar installation, especially if you’ve built one into your truck.
Look around for heart rate sensors that interface easily to microcontrollers, and you’ll come up with a few projects that use LEDs and other microcontrollers to do the dirty work of filtering out pulses in a wash of light.
[Thomas] was working on a project that detects if water is flowing through a pipe with a few piezoelectric sensors. Out of curiosity, he taped the sensor to his finger, and to everyone’s surprise, the values his microcontroller were spitting out were an extremely noise-free version of his heart rate.
The piezo in question is a standard, off the shelf module, and adding this to a microcontroller is as easy as putting the piezo on an analog pin. From there, it’s just averaging measurements and extracting a heartbeat from the data.
AVRWIZ is a code generator for the popular Atmel AVR microcontrollers, optimized for the AVR Studio IDE. Its a very nice automatic code generator for AVR microcontrollers developed by tcg in avrfreaks, which can generate code for most common tasks. It support baud calculator, timer calculator, multitasking generator, interrupts, ports and more. But there are several thing to be done like TWI, USI. As Author states there is lots of testing to be done. Project is open for new ideas and suggestions.
Nice thing I like about it that program is capable to generate code instantly. It can be saved as single file or whole Avr Studio project with makefile which is ready to compile instantly.
At times you require to SMASH or UNSMASH a number of components at a time either for rearranging the names or re size their text. Sometime you might need to UNSMASH them. This is important for making the sikscreens legible and look nice.
Although this is possible through the use of ULPs , here is how it can be implemented by command line of eagle.
For smashing all parts/components , use the following command
GROUP ALL; SMASH (>0 0);
For unsmashing all parts/components , use the following command
GROUP ALL; SMASH (S> 0 0);
For smashing already grouped parts/components , use the following command
SMASH (>0 0);
For unsmashing already grouped parts/components , use the following command
Before running a simulation with internal eeprom data (in serial eeprom, uc eeprom,…) in ISIS if you need to “reset the internal data” you can do it with the command
This circuit is a Digital Temerature Sensor using a Dallas ‘1-wire’ DS18B20 Digital Thermometer
Firstly I would like to thank Pommie and Mike, K8LH from the Electro Tech Online Forum for their genourous help. This has been the most challenging project to date and they have helped immensely. They have tought me many valuable lessons about programming in Assembly language and it has really assitsted me in getting this project up and running.
Note: I would like to make a point that some snippets of their own code is used in this program. I have used it with their permission and please observe any copyrights or name recognition placed in the code. If you wish to use their snippets of code, please contact them via the Electro-Tech-Online forum.
How It Works
The DS18B20 is a direct-to-digital temperature sensor using Maxim’s exclusive 1-Wire bus protocol that implements bus communication using one control signal. In regards to hardware, this particular sensor is particularly easy to interface to. It only requires 1 external pull-up resistor to operate as opposed to an analogue sensor which possibly needs multiple external components such as resistors and op-amps.
In regards to software, opposed to analogue sensors, the Dallas 1-wire digital sensors are arguably as easy to interface to. While an analogue sensor will need an Analogue to Digital conversion using a voltage reference and possibly using an op-amp, the Dallas 1-wire direct to digital sensors require precise timing when it comes to communication. This program is fairly basic in principle as all it does is obtain temperature data from the DS18B20 sensor and display the temperature in Degrees Celsius on a 4 digit, 7 segment display. But when it comes to actually doing this, as you will see from the .ASM file, it is more complicated than it sounds. In words; the program first initialises the PIC16F628A Microcontroller. It assigns the Inputs and Outputs, zero’s all bank 0 RAM, initialises the display column select bit and configures TIMER 2. TIMER 2 is used to interrupt the normal loop of the program to update the 7 segment LED display.
After the Microcontroller has been setup, it begins communication with the DS18B20 Temperature Sensor. Communication routines take up just under half of the program memory. After the temperature has been gathered and stored in RAM, the Microcontroller takes the 12-bit signed/fraction integer and converts it into a decimal number then stores it in four general purpose registers in RAM.
For example, take the number D’95.8′. It is stored like this:
These registers are then used within the Interrupt Service Routine to call a table to obtain display data.
The program runs continuously, updating the temperature on the display just over once per 1 second.
Features Summary:
Temperature data gathered more than once per second.
TIMER 2 interrupt driven display.
Program expandable to include multiple sensors on the same 1-Wire bus.
Temperature range of -55.0 – 127.9 Degrees Celsius.
Please see the DS18B20 Datasheet for detailed information on the device.
You can hide airwires only on a per signal basis. If you turn off the airwires for ground and power suplies you should have a much cleaner screen. Instead of using ratsnest ! signal_name, you can use the info command on a signal (airwire or trace) in the board window and you will see a check box “Airwires hidden” for that signal in the popup “Properties” window. Click on it and all airwires for that signal will be gone.
Hiding selected airwires
Sometimes it may be useful to hide the airwires of selected signals, for instance if these will later be connected through a polygon. Typically this could be supply signals, which have a lot of airwires that will never be routed explicitly and just obscure the other signals’ airwires.
To hide airwires the RATSNEST command can be given the exclamation mark (‘!’), followed by a list of signals, as in
RATSNEST ! GND VCC
which would hide the airwires of the signals GND and VCC.
To have the airwires displayed again just enter the RATSNEST command without the ‘!’ character, and the list of signals:
RATSNEST GND VCC
This will activate the display of the airwires of the signals GND and VCC and also recalculates them. You can also recalculate the airwires (and polygons) of particular signals this way.
The signal names may contain wildcards, and the two variants may be combined, as in
RATSNEST D* ! ?GND VCC
which would recalculate and display the airwires of all signals with names beginning with ‘D’, and hide the airwires of all the various GND signals (like AGND, DGND etc.) and the VCC signal. Note that the command is processed from left to right, so in case there is a DGND signal the example would first process it for display, but then hide its airwires.
To make sure all airwires are displayed enter
RATSNEST *
Use ‘RATS *’ at the command prompt to show all airwires.”