Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : SM1 LCD XY Position Indicator
Author | Message | ||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
Greeting's All, I've been modifying some of the existing library files for my own applications, one that I am having trouble with is an X and Y Axis Position Indicator for my Lathe, I have modified the Tacho.Bas file so that the LCD Pins are as follows: LCD SM1 I/Os (Pins) 12 reset counter 13 count down 14 count up 04-RS 15 06-Enable 16 11-Data Bit 4 17 12-Data Bit 5 18 13-Data Bit 6 19 14-Data Bit 7 20 This frees up I/O 11-14 for counting if required and I know that these are allocated for the comms ports which I am not using. The LCD circuit is the same as LCD.bas BMP with the 10K resistors on D4 to D7 and D0 to D3 tied to ground. Please note; I now refer to the SM1/ Maximite Pins as I/Os, so as not to confuse with IDC Pins (I find this helps alot). I intend to modify the Tacho.Bas file on lines 230 to 380 so that if PIN(14)=1 (high)then LCD line 1 will display X Pos = 000.01 if PIN(14)gets another high trigger then line 1 will show 000.02 and so on, I will need to set a PIN to reset the counter to zero and also set a PIN to count down, unless PIN(14) can count both up and down via a rotary encoder. I hope someone out there is listening and can assist...Regards Muttley Snickers |
||||
Gizmo Admin Group Joined: 05/06/2004 Location: AustraliaPosts: 5078 |
I think your on the right track Muttley. You only need two wires to detect direction and postion. The encoders used in old PC mice used a pair of LED's/phototransistors pairs slightly offset from eachother on a single slotted disk. The mouse firmware could tell direction by which pair were switched on first, and I dont see any reason why the Maximite couldn't do the same, providing the rate wasn't too high. Other options to look into. Use a PicAxe or other micro to do the direction/step tracking and send the data to the Maximite via I2C or serial. There may be a dedicated IC that can do it. Also, an old serial mouse can be used as a dual axis tracker. The mouse chip tracks steps and direction, then periotically sends the difference data down the serial cable when requested by the PC. So even if the PC is to busy to read the serial port, the mouse will keep a tally of the encoder figures, and keep track of the mouse position, until its data is requested. If your interested I do have some VB software I was working on years ago for tracking serial mouse data, it's possible it could be converted to MMBasic to let the Maximite communicate with a serial mouse. Glenn The best time to plant a tree was twenty years ago, the second best time is right now. JAQ |
||||
thetinkerer Regular Member Joined: 16/06/2011 Location: AustraliaPosts: 68 |
Hi, It sound like you are building a two axis DRO for your lathe. is that right? A little while ago I trialled a quadrature encoder(as Gismo mentioned) with the maximite. I used two inputs to detect the encoder direction/pulse. I used two inputs with a rising edge detection on each input and had the incrementing and decrementing of a counter in an interrupt routine. If the encoder went one direction the count went up and the opposite encoder direction decremented the counter. The main routine of the program handle the display (LCD routine in your case). Sorry I don't have the code with me as I am currently over seas. This may give some ideas: http://mcmanis.com/chuck/robotics/projects/lab-x3/quadratrak .html regards Marc {Fixed the link. Gizmo} |
||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
Thanks Glen for yor reply, just to clean up that last post, the LCD side of the project is fine, I can edit the lines eg; 330 LCD_line1$= " X Pos= 000.00" but do not know how to generate a count or transfer the count to the LCD. I have set the following In regards to the I/Os: 10 PIN(14)=0 20 SETPIN 14,2 30 CLS 40 LOCATE 0,0 100 IF PIN(14)=0 THEN PRINT "Off" 110 IF PIN(140=1 THEN PRINT "On" 120 DO WHILE PIN(14)=1 130 LOOP 140 DO WHILE PIN(14)=0 150 LOOP 160 GOTO 30 This can indicate the state of I/O 14 (PIN) "On" or "Off". I tried setting pin 14 to be a counter ie: SETPIN 14,5 but all I get is a message saying something like "pin not configured as an input". Does anyone know how to configure a counting input on the SM1. Very frustrating, the only thing I have counted is the hair thats falling out, a mate said the other day " Jez your losing your hair" and I replied " No Im gaining more scalp". Also i have looked at using mouse guts but I dont think that the resolution is enough, I am happy to use Omron 1000 PPR encoders, Which reminds me that I also have to setup a pre-scaler, eg: 1 rotation of the encoder = 2.00 mm as the top slide on the lathe has a 2.00mm pitch trapezoidal (Acme is Imperial, Trap is Metric) leadscrew so it would be 2.00mm /1000=0.002 microns. I have a Easson DRO on the milling machine with glass linear scales which are completly covered from swarf and coolant but the lathe gets messy and its impractical to have a linear slide on the top tool post. Anyway time for a coffee, regards & many thanks. PS: what about all you other blokes, surely you know how its done, This is THE BACK SHED not the sheltered workshop, come on I need help. Muttley Snickers |
||||
Gizmo Admin Group Joined: 05/06/2004 Location: AustraliaPosts: 5078 |
Thats not going to encourage anyone to help you. Do you give a hungry man a fish, or teach him how to fish. Have a look in the MMBasic manual, it covers the set pin commands. In your situation, your best approach would be to track pin state using interupts. Save what you have done, and start with a fresh new program. That way you dont get lost in the code. Experiment with the interupt feature to call routines to track the absolute X and Y position. Unfortunately its unlikely anyone has a bit of code you can use thats ready to go, you need to start from scratch and create your own, but thats the advantage of writing software, you can make it do what you want. Once you get a bit of code that works, you can then combine it with the LCD routines to get the finished program. Glenn The best time to plant a tree was twenty years ago, the second best time is right now. JAQ |
||||
jebz Regular Member Joined: 13/06/2011 Location: AustraliaPosts: 79 |
Other link had a space hopefully this one doesn't. http://mcmanis.com/chuck/robotics/projects/lab-x3/quadratrak .html It's got a good code example of quadrature encoder reading. |
||||
Talbit Senior Member Joined: 07/06/2011 Location: AustraliaPosts: 210 |
Muttley, For the LCD display you need to get your value and change it to a String... So if your value is mm so mm$=STR$(mm) Then 330 LCD_line1$= " X Pos="+mm$+"insert the number of spaces to fill up the line" You'll probably need to play around with leading zeros etc. Regards Talbit Talbit |
||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
To Gizmo and all other members: I herby retract the last paragraph of my last post and appologise to anyone that may be offended or upset.PS If a bloke is dying of hunger you would give him the fish. To Jebz; I had a look at the site that you linked and thank you very much, I have Omron, Baumer and a collection of other rotary encoders, as well as Omron and Red Lion Counter Modules that I use to test the encoders. At the moment I am just using momenary switches to send a high or low to the SM1 for preliminary testing an have built in the past CMOS counters using 4511 & 4510 chips to drive a 4 x 7 segment display, the CMOS config did not work well due to encoder interface and bounce issues with mechanical encoders. I have a number of linear slide scales with display modules similar to vernier calipers but again the issue is the messy enviroment on the lathe. I am in the process of completing a CNC machine which will use Mach3 software to run the Parker drives and stepper motors but also want to add to the stepper motors rotary encoders and a local LCD display to confirm the spindle position. The SM1 could probably do this as well as monitoring the limit and EStop switches should the PC & Mach 3 go offline (even though I have a charge pump which monitors communication between the PC and the CNC).A runaway CNC machine is a scary thing to behold and witness. I liked what Gismo did with the Logitec Game Controller and intend to do a similar thing. As I explained to Don, I have downloaded all of the manuals, upgrades, libraries and examples in regards to the SM1/ Maximite and have come a long way since first power up. As previously posted I have not had experience with PIC or Basic programming yet see the SM1 as being extremly flexible and may be applied to many practical applications, not including Space Invaders. I am versed in Hex & Binary and have programmed security, access control & CCTV systems for over 20 years and am highly respected in this and other fields. The SM1 is a new gadget to me and even though I have read all of the manuals sometimes it just takes a basic example for the whole thing to come into focus. Anyway, I do appreciate your replies am will persevere with this and many other projects. Regards & Many Thanks...Peter Muttley Snickers |
||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
Thanks Talbit, This is exactly what I am after, now I can edit and apply the code and just have to sort out the counting process and PINs. You have saved me a lot of time and panadol. Regards..Peter Muttley Snickers |
||||
Worm Newbie Joined: 30/06/2011 Location: New ZealandPosts: 38 |
Q. for Muttley. If you go down the track of using an encoder, how are you going to couple the encoder? The leadscrew will have back lash in the theads giving poor resolution. Normal postion sensors connect directly to the tool post or saddle. Kevin There's no such thing as a free lunch. |
||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
Good Day Kevin, I have made and replaced the original leadscrew on the lathe, and am aware of backlash issues related to rotary encoders mounted on the leadscrew, I can adjust the play via a modified leadscrew nut and bearing under the top slide and also keep the gibbs firm. On the CNC I have 16mm x 5mm pitch Ballscrews and have little or no backlash. The intended DRO on the lathe is simply for repeatability so that I may return to the same or near enough position after external measurement with micrometers or verniers, PS: I am not an engineer, just a precise hobby machinist. Again Many Thanks...Peter Muttley Snickers |
||||
Worm Newbie Joined: 30/06/2011 Location: New ZealandPosts: 38 |
Hi Peter. All the best for your project. I will keep an eye on how you get on. Im in the proccess of looking for a lathe. Its a pain in the arse to use other peoples lathes. You do get used to your own, especialy if its an older lathe. My brothers lathe is in Sydney. A bit too far to travel. Kevin There's no such thing as a free lunch. |
||||
thetinkerer Regular Member Joined: 16/06/2011 Location: AustraliaPosts: 68 |
Hello Muttley, Another option in regards to the actual measurement is something called a string encoder. This is an encoder with a spring loaded pulley(drum) which has a cable attached to it. you attach the encoder at the tailstock end and you attach the wire on the saddle. These come in incremental or absolute encoders and I have seen the incremental ones used on lathes and other machine DRO systems. The incremental encoders have a quadrature output as described in the link I posted. |
||||
Muttley Snicker Newbie Joined: 26/08/2011 Location: AustraliaPosts: 18 |
Thanks The Tinkerer, For my application I have not come up with anything better than incremental rotary encoders but am open to suggestions. As you are aware I could simply just bolt on a Mitutoyo, Sony or Easson DRO but that would be to easy, and I would still have the problem with swarf and coolant on the lathe. Furthermore, I am learning ablout the SM1 and finding new applications every day, most of which would be counting in one form or another. And I now have a serious referance manual called GW Basic which was all I needed to get a preview of what you others are seeing. The main info that I found helpful was Geoffs LCD.BAS, where he actually describes the function of the line statements. Prior to obtaining a SM1 from Don I had always wanted to find a use for all of the 16X2, 20X2 & 40X2 LCD modules that I had aquired over the last 10 years or so from replaced alarm codepads, now I have a use. Regards & Thanks Everybody...Muttley (going to bed with my newly aquired GWBasic Manual) Muttley Snickers |
||||
thetinkerer Regular Member Joined: 16/06/2011 Location: AustraliaPosts: 68 |
Hello Muttley, Here is a Quadrature counter routine I rewrote. 10 XA=11'Quadrature input A on pin
15 XB=12'Quadrature input B on pin 30 SETPIN XA,6,100 35 SETPIN XB,6,200 50 LOCATE 10,10 60 PRINT count 70 GOTO 50 80 ' 90 '********************** 100 'interrupt routine A 105 IF PIN(XB) THEN 110 Count = count + 1 115 ELSE 120 Count = count - 1 125 ENDIF 130 IRETURN 180 ' 190 '********************** 200 'interrupt routine B 205 IF PIN(XA) THEN 210 Count = count - 1 215 ELSE 220 Count = count + 1 225 ENDIF 230 IRETURN It only looks at the rising edge and there fore will only give you half the resolution. I guess that you could use another two inputs and trigger them on falling edge interrupts. US digital make a range of chips that take quadrature inputs into the chip and you get pulse and direction out. This would be really good on the maximite as you would just set an interrupt on the pulse input thus capturing all pulses. regards Marc |
||||
Bryan1 Guru Joined: 22/02/2006 Location: AustraliaPosts: 1344 |
G'day Guy's, A poor man's DRO on home machinery is everyone's dream and yes swarf can be a huge problem. Now how's this for a way out idea....... Jaycar do sell an ultrasonic chip fully sealed for a few $$$ and I have read they ain't the best but also I have read they can be a good sensor if they are fed around 90-100 volts for the 40khz pulse. OK swarf could get in the way of a reading but with the amount of samples taken a second they can be cancelled out. The sensor could be mounted in a way it bounce a signal back to the sensor. Now if one was to make the smarts for this why couldn't a ultrasonic sensor be used for a poormans DRO ???????? |
||||
Print this page |