Testing a small prototype of 4AZ-UGV. Good luck guys!!
Thanks David Jones for this amazing piece of technology. Ucurrent Gold. precision op-amp circuit designed specifically for measuring ultra-low currents. Design by David Jones from EEVblog. Ucurrent Gold will be used to help us to measure current for our Ultra Low Current Flasher project. Here is pre-test result for Ucurrent with our circuit..Guest what dang!!!! 15.2uA on sleep mode..our goal is to get <10uA on sleep mode.
program blink_12f1840
Blinker is powered by two button cell. Here is the code in Mikrobasic
program blink_12f1840
' Declarations section
main:
TRISA = 0 ' set direction to be output
porta =0
WDTCON = 25
while TRUE
LATA.b4 = 1
Delay_ms(1) ' 1 second delay
LATA.b4 = 0
Delay_ms(45) ' 1 second delay
LATA.b4 = 1
Delay_ms(10) ' 1 second delay
LATA.b4 = 0
Delay_ms(45) ' 1 second delay
LATA.b4 = 1
Delay_ms(15) ' 1 second delay
LATA.b4 = 0
asm
sleep
end asm
wend ' Endless loop
end.
Mac 2 2014
Ultra Low Current Flasher with PIC12F1840. This is small scale project that only need 4 components. Its sound stupid maybe. But when it come to make LED blink for a few months or years. That is the great challenge.
Microchip Study area :
1. Sleep mode
2. Wake up from sleep
3. Deep sleep?
4. Watchdog timer
5. SMD for low weight and slim design
6. The best LED for this job?
7. 1.8V or 3V?
8. bellow 10uA average working current (how to measure that accurately)
hand sketch schematic
Proteus Drafting
Here is the test without opto-isolator. if anything goes wrong I will fry my computer. first test for motor..very silent and working great.
May 28 2012
If you have a problem to download (as reported) you can e-mail me. thank you.
May 13th 2012
Budu 2dof v1.5 a.k.a Kubing 2dof v1.5 uploaded. Budu is the codename for this project when it first release 2 years ago. You can use same hardware schematic v1.4. For educational use only. read Disclaimer first. You can use Kubing 2dof v1.5.hex as inverted pendulum controller if you like (stand alone without PC). Good luck!!---kubing
Windows take about 2.09 milisecond to send 8 bit binary signal to controller at 19200 baudrate. even with pause = 1 ms on USO software. That is the Windows hardware restriction for uart communiaction.
April 15th 2012
Fix a few bugs in Budu 2dof v1.4. So the next release of Budu 2dof v1.5 will be here soon. Download link not available until the next release of firmware. Thank you for support and email. We are planning to start a new project to make it usable with android phone and tablet very soon.
Dec 20th 2011
Here is my version of joystik/panel controller
figure 1-1
PCB circuit figure 1-1 was created using Eagle Layout Editor that can be downloaded for free from CADSoft. However, this project used two layer pcb automatically generated using this software. There is still room for improvement to make the best controller. by adding a few expander port in the near future. Expander port is a type of chips produced by the Microchip company that is able to add up to 16bit switch. we can connect this chip using SPI or I2C. imagine if it is connected to 8 chip expander we get 8 x 16 = 128 switches can be controlled separately. Separate means we do not need a diode or a matrix column row system. each switch will be controlled by a separate bit. whether the toggle switch or push button switch.
Rotary encoder, widely known as a shaft encoder, is an electro-mechanical device that converts the angular position or movement to digital. Incremental encoder output provides information about the motion of the shaft is usually processed elsewhere in the information such as speed, distance, RPM, and position. In flight the rotary encoder is used in the autopilot controller, radio communication and so on. For now BuduFsx1643 has four rotary encoder input only. And will be added to the 16 channel according to current needs. I use the rotary encoder EC16B2410408 ALPS brand available at RScomponent or Element14 store. In addition BuduFsx1643 has 16 digital inputs and 3 analog input. This chip has an analog input 12bit resolution or 4095 step.
I have Logitech GT wheel which only has throttle and brake pedals. so with 3 analog inputs of this controller. I can take advantage of it to build a clutch pedal with 12bit resolution.
Here is Another great microchip project link
NOV 13th 2011
Figure 1-2a
Figure 1-2b
The Figure 1-2a shows a 2dof v1.4 project. It use USB connection directly without any converter chip such as FTDI or MAX232. It is the result of very extensive code modifications from the original project. This project uses PIC18f2550 and some other components. Very easy to build and requires only 30 minutes to solder. There are three variable resistor which is used to adjust Proportional, Intergral and Derivative. Included with two LEDs on board. red light indicates a connection established and the blue led to show incoming data. I think a simple circuit will reduce the risk of connection errors.
As I have stated all the MCU requires special programming tools to enable us to burn the code into its memory. I use pickit3 or icd3. you can also make your own programmer if you have time, but are advised to buy at any electronics store like mouser or rscomponent. USB programmer for as low as USD20 is 10 times better than the DIY programmer. Do not misunderstand. Because this is only based on my experience.
What is PID? Old day technology use On Off switching to control the system. The on-off controller is the easiest possible way of control. Many technical systems use it, not limited to controlling a motor. Refrigerator, heater, water pump usually use this system. But more complicated system its not going to work as we aspect by using this technique. The idea behind feedback control is very simple. We have a target speed, specified by the user or the computer program, and we have the current actual speed, measured by the sensor (hall, encoder, pot, etc). Measurements and actions according to the measurements can be taken very frequently(t).
The easiest way of control is not always the end of the story. A more sophisticated of controller and industry standard is the PID controller. It base on proportional, an integral, and a derivative control part. The controller parts are introduced in the following sections individually and in combined operation.
Proportional is the simplest term. The error is multiplied by the proportional gain,The amount of correction applied to the system is directly proportional
to the error.
to the error.
'kP term....
P1 = Kp * DIFF
P math in C code (embedded)
1 e_fungsi = v_target - v_drive; // error function //
2 z_motor = Kp*e_fungsi ; //motor output
The idea for the I controller is to reduce the steady-state error of the P controller. With an additional
integral term, this steady-state error can be reduced to zero.
I math in C code (embedded)
3 e_fungsi = v_target - v_drive;
4 z_motor = r_old + Kp*(e_fungsi - e_old) + Ki*(e_func+e_old)/2;
P math in C code (embedded)
1 e_fungsi = v_target - v_drive; // error function //
2 z_motor = Kp*e_fungsi ; //motor output
Integral term is calculate the "historic" error in the system in fixed period of time. How long the motor need to move from point A to B? How to set the timer overflow in microcontroller is not as easy as in P and D term. If we set the timer overflow too fast from what they need to compensate the error and the system will not going to stable. The integral gain must be thoroughly tested before implementation to any PID systems. Its not as simple as I term = gain * sum.
output = (kp * error_value) + (ki * integral) + (kd * derivative);
The idea for the I controller is to reduce the steady-state error of the P controller. With an additional
integral term, this steady-state error can be reduced to zero.
I math in C code (embedded)
3 e_fungsi = v_target - v_drive;
4 z_motor = r_old + Kp*(e_fungsi - e_old) + Ki*(e_func+e_old)/2;
Derivative term is based on the rate at which the system is changing. Sometime it can be extremely aggressive when it is acting on the error of the system. In my case I make it adjustable to reduce the aggressiveness of this term. Similar to the I controller, the D controller (derivative controller) is rarely used by itself, but mostly in combination with the P or PI controller. The idea for adding a derivative term is to speed up the P controller’s response to a change
of input
of input
'kD term......
errdelta = DIFF - errprev
d1 = kd * errdelta
drive = d1 + p1
errdelta = DIFF - errprev
d1 = kd * errdelta
drive = d1 + p1
15 sept 2011
Understanding DOF in simulation system (long story short)
In three dimensions, the six DOFs of a rigid body are sometimes described using these names:
- Moving up and down (heaving) = The yawing along the vertical Z-axis;
- Moving left and right (swaying);
- Moving forward and backward (surging) = Rolling along the longitudinal X-axis;
- Tilting forward and backward (pitching) = Sway along the lateral Y-axis.;
- Turning left and right (yawing);
- Tilting side to side (rolling).
Sept 9th 2011
Figure 1-3
The Green board on Figure 1-3 is pololu motor driver. It has the VNH2SP30-E chip full bridge motor driver intended for a wide range of automotive applications. The device incorporates a dual monolithic High-Side drivers and two Low-Side switches. The High-Side driver switch is designed using STMicroelectronic’s well known and proven proprietary VIPower™ M0 technology that allows to efficiently integrate on the same die a true Power MOSFET with an intelligent signal/ protection circuitry. This package, specifically designed for the harsh automotive environment offers improved thermal performance thanks to exposed die pads. Moreover, its fully symmetrical mechanical design allows superior manufacturability at board level. The input signals INA and INB can directly interface to the microcontroller to select the motor direction and the brake condition.
Sept 7th 2011
Finally Kubing 2DOF with USB CDC (virtual com) done. Using a PIC18F2550. Instruction shown below are for Windows Vista. Just Follow a yellow guide for setup.
Kubing 2dof USB Setup finish. Sometime X-sim can't detect virtual comm so you need to manually add "\com1" or "\comx" in the listbox above.
----------------------------------------------------------------------------------
Kubing 2dof V1.3b (June 9th 2011) The new and improve version come with status Rx led and much faster motor respond. Its should work well without limit switch.
*Gear indicator with F1 style rpm indicator for rfactor MMG..code and schematic Uploaded. Click here
-----------------------------------------------------------------------------------------------------------------
Inverted Pendulum Project
Inverted pendulum on buggy
The derivative term is crucial in order to bring the inherently unstable system into stability. In any PID control the derivative terms acts as an anticipator. By checking the current error against the previous error, the controller
can tell if the error term is getting bigger or smaller. If the error term is getting larger, the derivative term
adds to the output of the controller much like that of the proportional and integral terms, but to a lesser effect. If
the error term is getting smaller, this term will subtract from the output of the control in anticipation of an overshoot
condition. Without the derivative term the system will always be unstable because there is no way to compensate for the overshoot condition.
**********************************************************************************
KUBING 2DOF V1.1 (March 31th 2011)
After a month of testing and tuning on my inverted pendulum buggy I have found that by adding suppression caps to the POTs will drastically reduce the noise problem. This update applicable to all pots in my schematic. But only VR1 and VR2 shown.
can tell if the error term is getting bigger or smaller. If the error term is getting larger, the derivative term
adds to the output of the controller much like that of the proportional and integral terms, but to a lesser effect. If
the error term is getting smaller, this term will subtract from the output of the control in anticipation of an overshoot
condition. Without the derivative term the system will always be unstable because there is no way to compensate for the overshoot condition.
**********************************************************************************
After a month of testing and tuning on my inverted pendulum buggy I have found that by adding suppression caps to the POTs will drastically reduce the noise problem. This update applicable to all pots in my schematic. But only VR1 and VR2 shown.