Friday, March 14, 2014

Stepper Motor Interface PIC18F4550 Microcontroller

Stepper Motor Driver using PIC18F4550

This is a simple project for running a unipolar Stepper Motor using a PIC18F microcontroller. The Microcontroller is coded to run the stepper motor in three different stepping modes. The Stepper motor is interfaced with pic18f4550 using a ULN2003 chip. The Stepper motor is running in 9 volts, But pic18f4550 cannot draw 9 volts hence a uln2003 is used. 

Stepper motor Interface to PIC18F4550

The Microcontroller cycles three modes of stepper motor stepping such as Single, Half wave stepping and Full wave stepping with a delay of 2-3 seconds of delay in between. The Stepper motor Drive is coded with mplab x ide and XC8 Compiler.

Stepper Motor Source code

The Stepper Motor coils are connected to PIC18F4550 pins, RD4, RD5, RD6 and RD7, and then these pins are interfaced with ULN2003.

Stepper Motor Schematic PIC18F4550

According two the two source code posted here, two schematic is posted. The power source is common for both ULN2003 and pic18F4550 hence an IC 7805 to maintain input constant at 5 V.

Stepper Motor Project

Download and install mplab x ide along with XC8 Compiler (Either windows and Linux) and then download the project from the link below.
Run the project and burn the firmware into the microcontroller using your favorable microcontroller programmer such as JDM programmer or PICKIT2 programmer.

Testing the Stepper Motor

This is a basic mechanism to test weather the stepper Motor is working. It is a basic test to see if each of the pins are working. The Motor used here is an old unipolar Stepper motor.

Testing the Stepper Pulse 

After burning the stepper motor with the source code, Before interfacing the Microcontroller to the PIC18F4550, to test - few LED’s are connected across the Microcontroller pins, just to make sure if the pulses are getting generated the way as it is supposed to be for the stepper motor. After successful testing the Stepper Motor will be interfaced with the microcontroller via ULN2003.

After successfully testing the stepper motor pulse generated by the microcontroller , connect the stepper Motor across the microcontroller through the uln2003 IC.

Please refer my next tutorial for running a stepper motor using a computer via USB communication.

Thanks for Watching

Related post

Collection of Stepper Motor Tutorials and Projects

Tuesday, March 11, 2014

LOW RPM High Torque DC Motor Interface to PIC18F4550 | Robotics

This video is a demonstration of a LOW RPM High Torque DC motor interfaced with a PIC18F4550 microcontroller through a L293D Motor Driver circuit for a small tutorial robot. The pulses generated on the microcontroller pins are interfaced to the L293D which is guiding the Motor to run in Clockwise, Anti clockwise or Halt.

The low rpm and high torque of this dc motor makes it perfect for robotic applications. To increase the torque at the wheels, sometimes additional gears are necessary, but this specific high torque dc motor comes with an in built gear mechanism, providing necessary torque. This video shows a demonstration of the DC motors working before the entire circuitry was installed on a 4 wheel differential drive robot

The motor is operating on 12 Volts which is managed by the L293D, however the power to the microcontroller is being provided by same power source with a IC 7805 voltage regulator to keep input voltage to microcontroller strictly at 5 Volts.

The microcontroller is coded with Mplab X IDE and XC8 Compiler.

Thanks for watching


Monday, November 11, 2013

MPLAB X IDE Ubuntu Linux

Ref- Mplab X IDE Tutorial 

The only pain that I had with “Mplab” was that the interface was too old and unfortunately, Linux versions of Mplab were not available. So, to program my PIC18F4550 microcontroller I had to install a Virtual machine on my Linux (Ubuntu) and run windows on it. So, I had to be dependent on windows Virtual machine to use MPLAB IDE.

MPLAB X IDE and XC8 Compiler on Linux Ubuntu with advanced features
However the Mplab new version, that is Mplab X IDE solved that problem big time. Hurray it can be now installed on Linux machine too. Yes, the new versions still has some old bugs carried over with old Mplab IDE to its new makeover, but still at least it saved a lot of trouble by eliminating dependency on Windows computer totally. I am not a great fan of windows since I migrated to Linux 3 years ago.

Yes, the new MPLAB X IDE does look more like a cracked version of NetBeans but I guess I am OK with that. Now it looks better and has all the good features. I have been working on NetBeans long ago for my java projects so sometimes working on Mplab X IDE feels more like a tweaked version of NetBeans to me, but that absolutely fine.

Starting Mplab X IDE in Linux Ubuntu

In old versions, I had to install different compiler for programming a pic16f and a pic18f  but with new XC8 compiler took care of all those issues, as it doesn't require having different compiler suits. The XC8 C compiler alone handles most of them together.

Installing on Mplab X on Ubuntu was little tricky, But it all worked out favorably well. The java had to be updated before I could begin installing the Mplab X IDE on Linux I had to change the file permission. On Ubuntu before we can execute installation files it requires to make the file Executable by enabling “Allow Executing the Program as File” from properties and it started the installation like a charm without any trouble.

Linux Terminal and java update for Mplab X IDE and XC8 C

Mplab X IDE and XC8 C compiler on Linux Operating system

Mplab X IDE and XC8 C Installation

The User interface looks better, and I found some exiting things about Mplab X IDE. The execution happens faster and in the older version if you miss a semicolon then you had to wait till you compile the code and a window will tell you that you missed something,
But in the interactive version that problem also got solved, as it provides auto suggestions and point out right there if you are missing something or if you have made a typo in the source code, just like any other latest IDEs.

MPLAB X IDE starting after Installation - Loading Modules

Another thing which I noticed was the size of the .hex files after compiling. Soon after installation of Mplab X ide and XC8 Compiler, for the sake of testing I wrote a small code to blink led on pic18f4550, with first line of code as #include<p18f4550.h>. In XC8 compiler instead of include<p18f4550> you can also write Include<PIC18f4550> , I guess they have made some changes with libraries so it supports old and new libraries.

After compiling the Source code for the first time in new MPLAB X , I was little puzzled to see the output hex file appeared far short to me. For some time I actually though that there might be some issue with the IDE or I missed out something in the coding.

Mplab X IDE Tutorial  Programming and coding

So I checked my coding again and recompiled, but still there was no difference. To test out , I burned the new hex file into the microcontroller and I was shocked that it was working the way it was supposed to work. The led’s were blinking.

Conclusion was quiet clear that the output generated by Mplab X IDE was optimized and much shorter then what the old version of IDE did. I compiled the same code again with an old version of MPLAB and it generated a much more lengthy output then that of Mplab X.

You can find a short tutorial and case study on my website- MPLAB X post with some example coding as demonstration. Please visit my post for a bit more details and the whole comparison of output hex generated by Mplab X IDE and the old Mplab.

>>>>>>>>>> MPLAB X IDE Tutorial


Tuesday, March 20, 2012

A simple robot under construction "Robin v1.0"

A Simple Robot Tutorial

(On request by some friends).

I am making this robot completely on request, for the purpose of making Simple tutorial for making your own robot just for beginners (Note: not an expert level one, just a simple one for beginners , anyone can make it in simple steps . And coding is also not complex.) It will be based on simple AGENT PROGRAM (A.I)

Once I am done with this robot, i will upload a complete tutorial for making this robot on my website and blogs.I found a small broken toy car which had perfect tires , so decided to break it and decoded to transform it into a small robot.

This robot has no sensors , I call it as “robin v1.0” , in next robot I will add an IR [Infra red ]sensors and make it as an object detection and it will be “robin v1.1” , for now lets begin with our “robin v1.0”

I will use simple D.C motor and pic18f4550 microcontroller. Pic18f4550 is one of my favorite microcontroller because of its USB features. [to be very frank u can use 555 timer too to make my robin v1.0 , but since you cannot code a 555 and microcontrollers gives more degree of freedom to code, so I will go with microcontroller , plus u can code it the way u want it.] In My next version would be Robin v1.1, v1.2 where i will use Sensors and some complex motors like . Stepper motor and Servos. {PWM}

More details coming Soon

Keep reading, Thanks

Rakesh Ron

Please Visit my Website for more projects

My channel for more

Friday, January 20, 2012

JHD 16 2a LCD working with pic18f4550 "PICDEM FS USB"

JHD 16 2a LCD working with pic18f4550 "PICDEM FS USB"

Its a small demonstration of a jhd 16 2a lcd, jhd 16 2a is a small 2x16 character lcd , that i am controlling with PIC18F4550 microcontroller .

jhd 162A lcd interfacing‎ 2x16 char , 16 pins

The board is a home made PICDEM FS USB development board that i have made, the jhd 16 2a is connected to the microcontroller , i have used small C# application that i have made with a open-source LCD framework found over Internet. The Application is written C# that is controlling the text.

I will be posting /posted a detailed tutorial on my page and on instructables.

Thanks for watching.

Rakesh Ron

Monday, January 2, 2012

ROBOT wheels. Sensing Position with a mouse wheel.


Using mouse wheels, LCD display , pic18f2550 , C# , and MPLAB IDE (HI-TECH C compiler for 18f )

The Project is based on pic18f2550 interfaced with a 2x16 LCD [JHD 162A] and a mouse. I found an unused mouse and decided to use it in my robot.

You can Interface this project with your robot , and have it all displayed as a cool display on the LCD.

This project uses Visual 2010 C# , and is interfaced with pic18f2550

BASE FIRMWARE written in MPLAB IDE and HI-tech C compiler
and for mouse i am using a small software written in c#
in C# i am using mouse wheel event e delta property.


 Create a Mouse wheel event
      IF (e.Delta >0)
Display ("forward")
Display ("Backwards:)

Looks simple right?

:) :)

Thanks for watching

IF you wish to download the Edelta property Mouse wheel event project then you can get it on the link below. property Mouse wheel


Thanks for watching

Monday, November 28, 2011

USB DC Motor Driver using PIC18f4550

Hey friends its ron here,

This a small project on controlling D.C motor with USB pic18f4550 interface board with L293D motor controller.

To read the basics of Motor Driver Follow my Motor Driver Link

A small application is controlling my pic18f4550 USB interface board with my computer, enabling me to control my board with keyboard. The output the microcontroller is given to the input of a l293d motor controller , hence enabling me to control my DC motor in ( forward / reverse ) that is Clockwise and Counter Clockwise | anti-clock (cw/ccw) direction. For more info please watch my previous post on L293d motor controller. It must give you some idea if you a complete beginner.

Please watch both the video below for its demonstration.



NOTE:  If you wish to make this USB pic18f4550 microcontroller board then follow my project on my website for Schematics, Firmware and Codes.

Thanks for reading

Rakesh Ron.