I have a strange problem and i'll put both the schematic and pcb layout because i guess the problem happens because of the pcb.
I designed a controller and a stepper driver to drive a 4.2A motor. That's the link http://ram-e-shop.com/test11/product_info.php?cPath=35_62&products_id=244
The pcb layout was divided into two parts. the controller which receives the data to drive the motor. like the number of steps, direction and delay. these data are received using another circuit, i call it the master circuit. which controls several control circuits and is connected with them using I2c protocol. The master cct is connected to the computer using serial interface. so in brief. the laptop sends the X motor for example, and send the delay, steps & direction to the master and then the master choose the driver responsible to drive the X stepper motor and send the data to it's driver.
The controller of the stepper motor and the driver itself are on one pcb unlike anything i saw on the internet, where the controller and the driver are separated. the controller which is a Pic18F452 is isolated from the driver which is designed using L6203, by Optocouplers.
The schematic is attached.
LOW_LOGIC defines a 5V for the controller and it has an individual power source.
HIGH_LOGIC defines a 5V for the driver and it has another separte power source
HIGH_POWER_LOGIC is the high voltage used to drive the motor. it can by 12 or 24V. HIGH_LOGIC & HIGH_POWER_LOGIC are common ground.
L4-L8 are indicators. L4 lights up for one second when power turns on.
I know that the microcontroller resets when it turn on & off again.
The Problem:
After designing the PCB it was tested using a small stepper motor before using the bigger stepper motor at the top. The motor worked very well but sometimes it resets but we thought the problem because of the power source due to the existence of several circuits so we got bigger source with more current and also we changed the value of the I2c pull up resistors and the problem was solved and we thought that it won't happen again.
Later on, we bought the bigger stepper motor. we sent the data to the master then to the controller to drive the motor. but the micro keeps resetting. it just moves a second and stops because of the reset. The HIGH_LOGIC_POWER is 12V only. we thought maybe that's because of the motor noise which affects on the controller because we designed them on the same PCB. so we added the snubber network and put 5.5 ohm i guess and 15nf. but the problem wasn't solved. we even tried bypassing capacitors over the LOW_LOGIC supply and also nothing was solved.
The 2 L6203 has two heat sinks. the heat sinks are big and we used the heat sink of a pentium 3 processor. The 2 L6203 are side-by-side and there is a small clearance, i guess, 7 mm between the heat sinks of them.
the problem was solved by luck when i put a third heat sinks at the top of each of them where the bottom surface of the third heat sinks touches both the top sides of the 2 heat sinks. when that was done, the circuit no longer resets using the 12V supply. I didn't try high voltage because the transformer i ordered was sent by mistake to be 44 V and the max volt for the L6203 is 48V and the power supply reached 55 V after rectification.
The PCB layout is attached.
The controller is on the left side and the driver on the right, isolated by optocouplers. the power plane is the ground of the high side circuit which is for the driver.
I need to know, does the UC resets because of the motor's noise and i need to make to separate circuits ??
Why did the third heat sink solve the problem ??
THanks in advance and sorry for my long story
I designed a controller and a stepper driver to drive a 4.2A motor. That's the link http://ram-e-shop.com/test11/product_info.php?cPath=35_62&products_id=244
The pcb layout was divided into two parts. the controller which receives the data to drive the motor. like the number of steps, direction and delay. these data are received using another circuit, i call it the master circuit. which controls several control circuits and is connected with them using I2c protocol. The master cct is connected to the computer using serial interface. so in brief. the laptop sends the X motor for example, and send the delay, steps & direction to the master and then the master choose the driver responsible to drive the X stepper motor and send the data to it's driver.
The controller of the stepper motor and the driver itself are on one pcb unlike anything i saw on the internet, where the controller and the driver are separated. the controller which is a Pic18F452 is isolated from the driver which is designed using L6203, by Optocouplers.
The schematic is attached.
LOW_LOGIC defines a 5V for the controller and it has an individual power source.
HIGH_LOGIC defines a 5V for the driver and it has another separte power source
HIGH_POWER_LOGIC is the high voltage used to drive the motor. it can by 12 or 24V. HIGH_LOGIC & HIGH_POWER_LOGIC are common ground.
L4-L8 are indicators. L4 lights up for one second when power turns on.
I know that the microcontroller resets when it turn on & off again.
The Problem:
After designing the PCB it was tested using a small stepper motor before using the bigger stepper motor at the top. The motor worked very well but sometimes it resets but we thought the problem because of the power source due to the existence of several circuits so we got bigger source with more current and also we changed the value of the I2c pull up resistors and the problem was solved and we thought that it won't happen again.
Later on, we bought the bigger stepper motor. we sent the data to the master then to the controller to drive the motor. but the micro keeps resetting. it just moves a second and stops because of the reset. The HIGH_LOGIC_POWER is 12V only. we thought maybe that's because of the motor noise which affects on the controller because we designed them on the same PCB. so we added the snubber network and put 5.5 ohm i guess and 15nf. but the problem wasn't solved. we even tried bypassing capacitors over the LOW_LOGIC supply and also nothing was solved.
The 2 L6203 has two heat sinks. the heat sinks are big and we used the heat sink of a pentium 3 processor. The 2 L6203 are side-by-side and there is a small clearance, i guess, 7 mm between the heat sinks of them.
the problem was solved by luck when i put a third heat sinks at the top of each of them where the bottom surface of the third heat sinks touches both the top sides of the 2 heat sinks. when that was done, the circuit no longer resets using the 12V supply. I didn't try high voltage because the transformer i ordered was sent by mistake to be 44 V and the max volt for the L6203 is 48V and the power supply reached 55 V after rectification.
The PCB layout is attached.
The controller is on the left side and the driver on the right, isolated by optocouplers. the power plane is the ground of the high side circuit which is for the driver.
I need to know, does the UC resets because of the motor's noise and i need to make to separate circuits ??
Why did the third heat sink solve the problem ??
THanks in advance and sorry for my long story
Attachments
-
31.8 KB Views: 97
-
151.1 KB Views: 134