HobbyKing.com New Products Flash Sale
Reply
Thread Tools
Old Feb 15, 2013, 02:51 PM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Discussion
Picaxe Mirocontrollers. An impecunious oraman's introduction.

Picaxe microcontrollers are Pic chips pre loaded with a Basic Interpreter.
Programming is done down 3 wires from a 9pin serial socket or USB at one click.

They are the simplest, cheapest introduction to micros.

The simplistic program below uses 28 out of the 2048 bytes of the
8pin Picaxe 08M2, uses only 5 instructions and is fast enough to reliably
read pulses from receivers.
There is a mountain of information on the Picaxe site but only about 20
instructions are needed for control programmes such as servoslowdown and mixers.

As an example this question was Posted in 2009 ~~~~~~~~~~~~~

3 position rc electronic switch schematics?

Is there a circuit somewhere thats 3 position? (ON, OFF, ON) to turn on two
different things, and a neutral off for both of them.
For example: Move the stick forward it turns one relay to "ON", but when you
pull the stick back it turns a different relay to "ON" and neutral stick position
is "OFF" for both relays.

Reply
You could download the free Picaxe Programming Editor, select 08M2, copy and
paste this simplistic program,Click Simulate, change Generic to 100, 150, 200,
100 repeatedly and observe the action.

If I can help?

Dave

www.picaxe.co.uk
https://solarbotics.com/catalog/micr...icaxe/chips/2/
http://www.robotshop.com/search/sear...eywords=picaxe
http://www.phanderson.com/picaxe/picaxe.html


Code:
'Stick centre pulse is 150. (') = comment :defines place Label

START: '..................A destination for jumps within the program
  pulsin 3,1,b2 '.........RX pulse on GPIO3, pin 4 on the chip into variable b2
    if b2 < 130 then goto LEFT '..conditional jump if b2 is less than 130
    if b2 > 170 then goto RIGHT '." if more than 170
  low 1 '.........................TX stick is at centre, cancel earlier action
  low 2 '........................."
  goto START '.................. .jump to START and await next RX pulse
LEFT: '...........................another label
  high 1 '........................+5V on GPIO1 on chip pin 6 to transistor
  goto START
RIGHT:
  high 2 '........................+5V on GPIO2 on chip pin 5 " 
  goto START
orraman is online now Find More Posts by orraman
Reply With Quote
Sign up now
to remove ads between posts
Old Feb 15, 2013, 03:34 PM
---o-O-o---
blutoh's Avatar
United States, NJ, Livingston
Joined Mar 2012
1,604 Posts
Hi Dave,

Good stuff. Seems very easy to implement and write code. A few questionsif I may:
  • Have you used the picaxe with I2C? I saw some basic I2C use on one of the links.
  • How are you using it in your applications? As the sole mc device, or in conjunction with other devices?
  • It seems very flexible in way of power requirements, what has your experience been?
Thanks,
Pete
blutoh is offline Find More Posts by blutoh
Reply With Quote
Old Feb 15, 2013, 04:24 PM
made of fire and pop rocks
bgnome's Avatar
Richmond Virginia
Joined Oct 2009
1,711 Posts
My first development boards is a picaxe and the language is pretty straightforward. I switched over to Arduino because of the large community support, and availability of accessories available for it, more pug and play if you will. The picaxe predates the ATMega32 chip based arduino.

I do like the Picaxe though, and it will be part of my evolving knoweldge base.

the serial connection I find is a bit of a pain in the butt personally, using a regular Dsub-9 that is. but a programing port and cord for a Picaxe can be easily fabricated with an old mini headphone jack, plug and cord and a barebones Dsub-9 plug.

I think the Propeller boards are the Picaxe equivalent of a Arduino.
bgnome is offline Find More Posts by bgnome
Reply With Quote
Old Feb 15, 2013, 05:09 PM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Greetings Blutoh,

My only use of I2C has been the DS18B20 Temperature Sensor with the Readtemp or Readtemp12 commands.
The syntax being ~~
Readtemp pin,variable
Conversion takes up to 750ms but flawless and reliable.

I am using an ADC to read a pot for setpoint.
A proportional burst output to a zero crossing SSR into a remote 240v heater.
One DS18B20 reading ambient
Another DS18B20 has a resistor tight against it's underside and it's leads for good thermal transfer.
Via a transistor the resistor is heated with the same output as the SSR so that this DS18B20 should render an analogue of the heat in the remote heater. Feedback with the ambient reading will require further testing and a look-up table. Work in progress but looking good.

There are another half dozen I2C instructions in Manual 2.

I have found it comparatively easy to use Picaxe together, even powering one from another if within the 25ma from a pin.

Or have I picked you up wrongly?

Dissleccik Dave
orraman is online now Find More Posts by orraman
Last edited by orraman; Feb 15, 2013 at 05:16 PM. Reason: dd
Reply With Quote
Old Feb 15, 2013, 05:46 PM
---o-O-o---
blutoh's Avatar
United States, NJ, Livingston
Joined Mar 2012
1,604 Posts
No, you nailed it Dave. Thats the info I was looking for.

Thanks,
Pete
blutoh is offline Find More Posts by blutoh
Reply With Quote
Old Feb 15, 2013, 05:57 PM
Spreckels Lake, GGP, SF, CA
craig_c's Avatar
USA, CA, San Francisco
Joined Apr 2007
3,674 Posts
Jargon Watch....

Pls see Jargon Watch here. Thanks
craig_c is offline Find More Posts by craig_c
RCG Plus Member
Last edited by craig_c; Feb 15, 2013 at 06:26 PM.
Reply With Quote
Old Feb 15, 2013, 06:22 PM
made of fire and pop rocks
bgnome's Avatar
Richmond Virginia
Joined Oct 2009
1,711 Posts
posting from your Iphone craig? that email thing took me right to the lite version, or mobile site on my laptop :P


but yes, you are correct, geeks tend to talk in geek speak, esppecially when dealing with other geeks, and the point of it all is to dispell all this... stuff into something a laymen can understand, apperciate, make use of, and quite possibly steal code for simular projects that can be modified to suit needs.


if any of us get a little too geek speak and if anyone asks us just what the heck we are talking about, we should be prepared to explain our selves in a less technical fashion and be able and willing to expond on that notion if asked.
bgnome is offline Find More Posts by bgnome
Reply With Quote
Old Feb 15, 2013, 06:36 PM
made of fire and pop rocks
bgnome's Avatar
Richmond Virginia
Joined Oct 2009
1,711 Posts
Also, if one posts code, it should be annotated.. as orraman did in his first post.. an explination in the code line, to explain what the bit of code does, very helpful for the person learning, or, god forbid, the poor tech that has to come up behind the original tech to fix problems down the road. all my code back in my PLC days was annotated. because sometimes, the tech coming in to fix the problem maybe your, and time is money, so dont waste half your time deciphering the code to people talk!

also K.I.S.S. not the rock group band, but the philosophy... Keep It Simple, Stupid. that alsowill help stream line your code, and keep a small footprint which is critical in these small environments.
bgnome is offline Find More Posts by bgnome
Reply With Quote
Old Feb 15, 2013, 06:48 PM
Spreckels Lake, GGP, SF, CA
craig_c's Avatar
USA, CA, San Francisco
Joined Apr 2007
3,674 Posts
Welcome aboard Dave, glad you could join us.
craig_c is offline Find More Posts by craig_c
RCG Plus Member
Old Feb 16, 2013, 08:15 AM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Gentlemen, Thank you,

Blutoh,
Sorry for giving you duff information, I had used the DS18B20 (one wire temperature sensor) in the paint by numbers system straight out of Picaxe Interfacing Manual3.
In defence I can say that I looked at the google headlines before replying and misread the confusing results.

Prattling on about temperature got me thinking about Profmason's Picaxe pages.
But you will need to scroll down past his perfectly detailed
Wireless Picaxe
Picaxe based LiIon Battery Charger
Picaxe Pong Sat Mk1 ....................to get to his

Picaxe 08M Datalogger using an LM35 Temperature Sensor with the instruction ~~
readadc10 pin,variable

Picaxe variables are in pairs of two 8 (binary) bit bytes each capable of holding numbers 0 to 255 decimal.
So that variable b0 and variable b1 when combined become the 16 bit word w0 holding numbers 0 up to 65535 decimal.
But each of these byte variables b0 and b1 is still available separately while still being available as w0.

The Readadc (pin), b4 instruction would put the 8 most significant bit values into the byte variable b4 and the fine detail would be discarded.
Readadc10 (pin, here named adc) w0 puts the 10 bit value available into b0 and b1 with the finer detail (least significant) into b0. So by reading 10 bits into a two byte word and then taking the lower byte the finer detail is saved.
This effectively amplifies the signal voltage being read.

Consider the program in Post #1 being used to move a gun turret with a DC motor, limit switches are a pain and a potential source of problems. The voltage to the motor could be reduced to the point where stalling would not damage the motor by overheating but this would require a bigger motor than needed.
If a resistor is in series with the motor the current flowing through the resistor will cause a voltage to be developed across it's terminals.
This voltage could be fed to an ADC, analogue to digital converter in the Picaxe.

Pseudo code
Readadc10 pin,w0 '.............................voltage across resistor into word variable w0
if b0 > safe value, then stop motor '.......taking the low byte with it's greater sensitivity allows a smaller resistor value, less heat and less wasted power.

Dave

http://profmason.com/?cat=10&paged=3
orraman is online now Find More Posts by orraman
Last edited by orraman; Feb 16, 2013 at 06:00 PM. Reason: dd
Reply With Quote
Old Feb 18, 2013, 05:44 PM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
.
It is comparatively easy to control servos with a Picaxe using the instruction Servo to initiate the function and subsequently the instruction Servopos as this does not interfere with the internal timer and so avoids jittering.
Servopos runs in the background, allowing other tasks to be performed and is only used when a change of position is required.
GPIO is the nomenclature of Microchip, General Purpose Input Output pin arrangement.

Start:
servo 4,100 '.......initiate a servo on GPIO4 = pin3. 100*10us = 1ms pulse repeated ~ every 18ms
main:
servopos 4,100 '....jump is to here rather than goto Start to keep timer happy
high 1 '..................5v on GPIO1 light up LED
pause 1000 '..........keep LED on for 1000ms
low 1 '...................LED off
servopos 4,200 '....reposition servo
pause 2000 '.........Keep LED off for 2000ms
goto main '...........in this program the servo is powered to and in it's demand position, forcing it's moves and resisting deflecting forces.
Memory used = 24 bytes out of 2048 working 08M2 or copy and paste in simulator

There is another way to constantly control a servo particularly when the Picaxe is receiving servo pulses from an RC receiver.
From the program in Post #1 Perhaps for dropping 2 anchors,

START: '.........................................A destination for jumps within the program
pulsin 3,1,b2 '...............................RX pulse on GPIO3, pin 4 on the chip into variable b2
if b2 < 85 or b2 >220 then start '...reject pulses outside normal range
if b2 < 130 then goto FIRST '........conditional jump if b2 is less than 130 else drop through
if b2 > 170 then goto SECOND '.. if more than 170 else drop through
pulsout 4,100 '..............................servo held at left holding 2 anchors awaiting TX command
goto start '....................................TX stick is centered. Picaxe await next pulse
FIRST: '..........................................servo centre, drop one
pulsout 4,150 '..............................}incoming pulses are timed by the Transmitter so are
goto START '................................}are already at the proper RC frame rate ~ 20ms
SECOND:
pulsout 4,200 '..............................servo right, drop last anchor or both
goto START

42 bytes out of 2048 working 08M2, Futaba TX & RX, or copy and paste in simulator

Dave
orraman is online now Find More Posts by orraman
Last edited by orraman; Feb 18, 2013 at 06:18 PM. Reason: dd
Reply With Quote
Old Feb 18, 2013, 06:53 PM
Registered User
United States, PA
Joined Feb 2013
92 Posts
So not all PIC microcontrollers have this same language, only the ones from picaxe, correct? I did a search looking for PIC and radio, and one site I found shows some tutorials but the code looks like it is all C. IS it possible to use a PIC with basic instead of C to talk to a radio? The basic you are using looks so much easier.

HD
Heavy_Duty is offline Find More Posts by Heavy_Duty
Last edited by Heavy_Duty; Feb 18, 2013 at 07:12 PM.
Reply With Quote
Old Feb 19, 2013, 11:08 AM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Greetings H D,

Pic microcontrollers are made by Microchip who have low level assembler software which gives the greatest possible control of all the capabilities of their micros and programs run at the speed of the processor.
Expect to take a year or so to become competent in programming in assembler language as this requires intimate understanding of the architecture and functionality of each micro and it's Data Sheet.

C is a high level language, using a semblance of English and many control codes, the program is compiled into assembler close to native Pic assembler and run at processor speed. A good understanding of the architecture and functionality of the chip is required.

Basic is high level language in a form of stilted but understandable English.
Compiled Basics such as Proton Basic require some understanding of the architecture and functionality of the chips, programmes run at processor speed but may not handle interrupts at machine level.

All of the above require a hardware programmer to load the program into the micro unless a bootstrap is used but the bootstrap has to be programmed with a programmer. A good working knowledge of the compiler and how it handles software fuses is needed.

Interpreted Basic such as Picaxe Basic is near to spoken English and great effort has been made to make it easy to use.
The manuals have simple diagrams showing the functions available on each size of Picaxe, Pic architecture and Data Sheets are neither mentioned or needed.
Smaller Picaxe run at between 4MHz and 32MHz but interpreting the code takes time so instruction execution is in the order of some 100,000s per second and this is more than sufficient for the great majority of RC functions. Interrupts are software interrupts where the end of each line of code is checked for an interrupt.

My experience has been of normal model radio control and the second program in the previous post functioned properly with Futaba equipment.

Picaxe have 2 pages of wireless modules that are available to suit Picaxe micros.

Dave EAOE

http://www.techsupplies.co.uk/epages.../PICAXEConnect
orraman is online now Find More Posts by orraman
Last edited by orraman; Feb 19, 2013 at 12:41 PM. Reason: dd fuses
Reply With Quote
Old Feb 20, 2013, 09:07 AM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Morse Code Beacon

.

Morse Code Beacon

Only thing that I can add to this is that the current Picaxe 08M2 has 4 times the memory of the Picaxe 08M used in this project.

Dave

http://www.trainelectronics.com/MorseCode/index.htm
orraman is online now Find More Posts by orraman
Reply With Quote
Old Feb 21, 2013, 03:09 AM
Registered User
Scottish Borders
Joined Mar 2006
583 Posts
Shortest 1 second FLASH routine?

Start: toggle 1 '...alter state high/low LED on GPIO1,pin6
pause 500 '.........hang about for 1/2 second
goto Start '.........repeat flash every second




Dave ?
orraman is online now Find More Posts by orraman
Reply With Quote
Reply


Thread Tools

Similar Threads
Category Thread Thread Starter Forum Replies Last Post
Discussion Help, S.O.S., ..._ _ _... (and introduction) sajosa Electric Plane Talk 15 Feb 28, 2013 03:00 AM
Discussion How to wire an ESC to picaxe. keffa12 DIY Electronics 9 Apr 02, 2011 11:44 AM
Brushless Motors -- An Introduction... rc_ron Power Systems 1 Aug 06, 2004 01:18 PM
Suggest an introduction ducted jet ARF? bwaltz Electric Ducted Fan Jet Talk 2 Aug 23, 2002 08:50 PM