Add initial feed
The MCU board now lets the printer pull in the carrier until the new paper in sensor is triggered for the first time and then starts the print like before. The new "initial feed" provides an alignment of the carrier which is exactly the same every time. Of course, the carrier now needs two markings.
This commit is contained in:
parent
8ac4d886e5
commit
2f9c8f51c7
|
@ -27,10 +27,11 @@ The main hardware difference between E260d and E360d is the use of a different o
|
|||
|
||||
The hardware modifications are mainly the same as in [the original instructable](http://www.instructables.com/id/Modification-of-the-Lexmark-E260-for-Direct-Laser--1). But, because the motor directly pulls in the carrier, an additional clutch is needed to keep the rollers stopped unless the carrier actually should move. The printer provides a solenoid, which is able to block the rollers, on its left side. Cut the low-side cable at the printer's controller board and connect it to the new MCU board. Leave the other end connected to 24V. The MCU board also needs a connection to a hall sensor of the motor in order to be able to check if it is running. I tapped the lowest pin on J17, but any of the three sensor lines should work. Just be sure that you do not connect the MCU to one of the motor windings (the three wires with the ferrite bead over them), as they are driven with 24V.
|
||||
|
||||
I made also some smaller modifications:
|
||||
I made some additional modifications:
|
||||
|
||||
- I use a 18cm wide and 30cm long carrier. The 60cm long carrier proved to be way to long for me.
|
||||
- I swapped the forked light barrier "new paper in sensor" for a reflective sensor (SFH900-2). This way I can use a piece of tape on the carriers bottom instead of a hole. If you use the original approach, you have to invert the signal in the AVR's source code.
|
||||
- My carrier has two markings for the reflective light sensor. The new first marking triggers the sensor when the carrier is pulled in just slightly. The MCU board uses this to feed the carrier into the printer into the exact same starting position every time. Especially for double-sided PCBs this is useful as it provides better alignment. The markings on my carrier are now 113mm and 181mm from the top with the reflective light sensor being 100mm in front of the first axle.
|
||||
|
||||
### New MCU board
|
||||
|
||||
|
|
114
build/main.hex
114
build/main.hex
|
@ -1,57 +1,59 @@
|
|||
:100000001AC091C0A7C030C02FC02EC02DC02CC0B8
|
||||
:100010002BC02AC029C028C027C027C025C024C0A3
|
||||
:1000200023C022C021C0E2C0F1C00CC120C12EC13A
|
||||
:1000300049C164C17DC111241FBECFEDCDBF10E009
|
||||
:10004000A0E6B0E0ECE6F3E002C005900D92A23627
|
||||
:10005000B107D9F720E0A2E6B0E001C01D92A836B2
|
||||
:10006000B207E1F785D080C1CBCF1F920F920FB6B8
|
||||
:100070000F9211248F939F93AF93BF93809164004D
|
||||
:1000800090916500A0916600B09167000196A11D56
|
||||
:10009000B11D8093640090936500A0936600B093B7
|
||||
:1000A00067008091640090916500A0916600B09116
|
||||
:1000B0006700892B8A2B8B2B59F48FEF9FEFDC0184
|
||||
:1000C0008093640090936500A0936600B0936700EE
|
||||
:1000D000809163008823F1F080916000909161002D
|
||||
:1000E00001969093610080936000809160009091F0
|
||||
:1000F0006100892B31F48FEF9FEF90936100809323
|
||||
:1001000060008091600090916100069710F4959ACC
|
||||
:1001100001C09598BF91AF919F918F910F900FBEA5
|
||||
:100120000F901F9018951F920F920FB60F921124E7
|
||||
:100130008F9380916300833021F08091630082303F
|
||||
:1001400019F481E0809363008F910F900FBE0F90A0
|
||||
:100150001F9018951F920F920FB60F9211241092B4
|
||||
:100160006100109260000F900FBE0F901F901895C5
|
||||
:100170008E9A8D9A8C9A969A959A949AC09AC19AC8
|
||||
:10018000B99AC29ABA9AC39ABB9ABC9AC49A82E0A4
|
||||
:1001900080BF83E083BF8CE786BF81E089BF85B7DE
|
||||
:1001A000826085BF8BB780648BBF85B7846085BF55
|
||||
:1001B0008BB780688BBF78941092640010926500B2
|
||||
:1001C00010926600109267001092630081E097E041
|
||||
:1001D00026E035E044E053E062E0E0916300F0E0C7
|
||||
:1001E000E830F105D0F7ED5EFF4F0994C090640050
|
||||
:1001F000D0906500E0906600F090670078E8C71640
|
||||
:1002000073E1D706E104F10440F3ABC0C19AC29A8E
|
||||
:10021000C39A969AC4989498E0916000F091610016
|
||||
:100220003697D8F6B099D9CFC49A949A9698609395
|
||||
:1002300063001092640010926500109266001092A4
|
||||
:100240006700CBCFC0906400D0906500E09066005E
|
||||
:10025000F090670077EEC7167DE0D706E104F10461
|
||||
:1002600008F4BBCFC498C29850936300B6CFB09B3C
|
||||
:10027000B4CFC198969A10926400109265001092C3
|
||||
:1002800066001092670040936300A7CFC09064009F
|
||||
:10029000D0906500E0906600F090670072E8C716A5
|
||||
:1002A00076E0D706E104F10408F497CFC3981092E2
|
||||
:1002B00064001092650010926600109267003093FF
|
||||
:1002C00063008BCFC0906400D0906500E090660022
|
||||
:1002D000F090670073EAC71671E0D706E104F104F5
|
||||
:1002E00008F47BCFC29A10926400109265001092BD
|
||||
:1002F000660010926700209363006FCFC090640087
|
||||
:10030000D0906500E0906600F090670076E7C71631
|
||||
:1003100072E0D706E104F10458F0C19A109264002B
|
||||
:10032000109265001092660010926700909363002F
|
||||
:10033000C0906400D0906500E0906600F090670087
|
||||
:1003400079E9C71676E0D706E104F10408F445CF51
|
||||
:10035000C39A109264001092650010926600109289
|
||||
:0C03600067008093630039CFF894FFCF52
|
||||
:02036C00060089
|
||||
:100000001CC093C0A9C032C031C030C02FC02EC0A8
|
||||
:100010002DC02CC02BC02AC029C029C027C026C093
|
||||
:1000200025C024C023C0E6C0F5C008C115C129C140
|
||||
:100030002DC13BC156C171C18AC111241FBECFED74
|
||||
:10004000CDBF10E0A0E6B0E0EAE8F3E002C0059022
|
||||
:100050000D92A236B107D9F720E0A2E6B0E001C0C8
|
||||
:100060001D92A836B207E1F785D08DC1C9CF1F9286
|
||||
:100070000F920FB60F9211248F939F93AF93BF935C
|
||||
:100080008091640090916500A0916600B091670036
|
||||
:100090000196A11DB11D8093640090936500A0930B
|
||||
:1000A0006600B09367008091640090916500A09114
|
||||
:1000B0006600B0916700892B8A2B8B2B59F48FEF48
|
||||
:1000C0009FEFDC018093640090936500A09366002D
|
||||
:1000D000B0936700809163008823F1F08091600005
|
||||
:1000E00090916100019690936100809360008091EF
|
||||
:1000F000600090916100892B31F48FEF9FEF909316
|
||||
:10010000610080936000809160009091610006978B
|
||||
:1001100010F4959A01C09598BF91AF919F918F91DE
|
||||
:100120000F900FBE0F901F9018951F920F920FB651
|
||||
:100130000F9211248F9380916300853021F080917C
|
||||
:100140006300833019F481E0809363008F910F90F6
|
||||
:100150000FBE0F901F9018951F920F920FB60F921F
|
||||
:10016000112410926100109260000F900FBE0F904A
|
||||
:100170001F9018958E9A8D9A8C9A969A959A949A21
|
||||
:10018000C09AC19AB99AC29ABA9AC39ABB9ABC9AAF
|
||||
:10019000C49A82E080BF83E083BF8CE786BF81E0A2
|
||||
:1001A00089BF85B7826085BF8BB780648BBF85B7F9
|
||||
:1001B000846085BF8BB780688BBF78941092640091
|
||||
:1001C0001092650010926600109267001092630012
|
||||
:1001D00081E099E028E037E046E055E064E073E034
|
||||
:1001E000A2E0E0916300F0E0EA30F105D0F7ED5EC7
|
||||
:1001F000FF4F0994C0906400D0906500E0906600C5
|
||||
:10020000F0906700E8E8CE16E3E1DE06E104F104D1
|
||||
:1002100040F3B6C0C19AC29AC39A969AC498949869
|
||||
:10022000E0916000F09161003697D8F6B099D9CF8F
|
||||
:10023000C498949A9698A0936300D3CFB09BD1CFE3
|
||||
:10024000C49A70936300109264001092650010923B
|
||||
:10025000660010926700C5CFC0906400D090650022
|
||||
:10026000E0906600F0906700E7EECE16EDE0DE0667
|
||||
:10027000E104F10408F4B5CFC498C2986093630018
|
||||
:10028000B0CFB099AECF50936300ABCFB09BA9CFA6
|
||||
:10029000C198969A109264001092650010926600C0
|
||||
:1002A00010926700409363009CCFC0906400D09090
|
||||
:1002B0006500E0906600F0906700E2E8CE16E6E0A8
|
||||
:1002C000DE06E104F10408F48CCFC39810926400B8
|
||||
:1002D00010926500109266001092670030936300E0
|
||||
:1002E00080CFC0906400D0906500E0906600F090F0
|
||||
:1002F0006700E3EACE16E1E0DE06E104F10408F46B
|
||||
:1003000070CFC29A1092640010926500109266003D
|
||||
:10031000109267002093630064CFC0906400D09077
|
||||
:100320006500E0906600F0906700E6E7CE16E2E038
|
||||
:10033000DE06E104F10458F0C19A109264001092B4
|
||||
:100340006500109266001092670090936300C09061
|
||||
:100350006400D0906500E0906600F0906700E9E9E5
|
||||
:10036000CE16E6E0DE06E104F10408F43ACFC39AC3
|
||||
:10037000109264001092650010926600109267005F
|
||||
:0A038000809363002ECFF894FFCFA6
|
||||
:02038A0006006B
|
||||
:00000001FF
|
||||
|
|
24
src/main.c
24
src/main.c
|
@ -84,10 +84,21 @@ int main(void)
|
|||
// blocked by carrier
|
||||
if(HallSensorTimer < T_HALL_L && !(I_NPPINS & (1 << P_NPPINS)))
|
||||
{
|
||||
// Block carrier
|
||||
O_CLUTCH |= (1 << P_CLUTCH);
|
||||
// Unblock carrier
|
||||
O_CLUTCH &= ~(1 << P_CLUTCH);
|
||||
O_LED_GN |= (1 << P_LED_GN);
|
||||
O_LED_RD &= ~(1 << P_LED_RD);
|
||||
|
||||
State = AlignFeed;
|
||||
}
|
||||
break;
|
||||
case AlignFeed:
|
||||
// Check if carrier has moved to the first marked position
|
||||
if(I_NPPINS & (1 << P_NPPINS))
|
||||
{
|
||||
// Block carrier
|
||||
O_CLUTCH |= (1 << P_CLUTCH);
|
||||
|
||||
State = ClutchDelay;
|
||||
MillisecondCounter = 0;
|
||||
}
|
||||
|
@ -101,6 +112,15 @@ int main(void)
|
|||
// Enable manual paper feed sensor
|
||||
O_MNPFSO &= ~(1 << P_MNPFSO);
|
||||
|
||||
State = WaitingForFeed;
|
||||
}
|
||||
break;
|
||||
case WaitingForFeed:
|
||||
// Check if the end of the alignment marking on the carrier is
|
||||
// hit (this state is needed because the alignment marking would
|
||||
// lead to skipping the WaitingForPaperIn state right away)
|
||||
if(!(I_NPPINS & (1 << P_NPPINS)))
|
||||
{
|
||||
State = WaitingForPaperIn;
|
||||
}
|
||||
break;
|
||||
|
|
29
src/main.h
29
src/main.h
|
@ -7,14 +7,27 @@
|
|||
|
||||
typedef enum
|
||||
{
|
||||
PowerOnWait,
|
||||
Idle,
|
||||
ClutchDelay,
|
||||
WaitingForPaperIn,
|
||||
ExitOnDelay,
|
||||
ManualPaperFeedOffDelay,
|
||||
PaperInOffDelay,
|
||||
ExitOffDelay
|
||||
PowerOnWait, // Power-on test state with all outputs
|
||||
// enabled
|
||||
|
||||
Idle, // Waiting for print job
|
||||
|
||||
AlignFeed, // Initial pulling in for proper align-
|
||||
// ment of the carrier
|
||||
|
||||
ClutchDelay, // Delay before main carrier feed
|
||||
|
||||
WaitingForFeed, // Waits for the end of the carrier
|
||||
// alignment mark
|
||||
|
||||
WaitingForPaperIn, // Waits for the paper in mark on the
|
||||
// carrier
|
||||
|
||||
ExitOnDelay, // Wait for print to be completed
|
||||
|
||||
ManualPaperFeedOffDelay, // Various delays
|
||||
PaperInOffDelay, // for disabling the
|
||||
ExitOffDelay // sensor signals again
|
||||
} State_t;
|
||||
|
||||
int main(void);
|
||||
|
|
Loading…
Reference in a new issue