ВНИМАНИЕ! На форуме началось голосование в конкурсе - астрофотография месяца - АПРЕЛЬ!
0 Пользователей и 1 Гость просматривают эту тему.
Здравствуйте астролюбители, есть EQ5 черная с одним мотором по RA и пультом на микроконтроллере at89c2051. Отличный походный вариант для меня. По неосторожности подключил 12V вместо 6V. Выскочил микроконтроллер. Прошивку из него не зачитать. Смоделировал схему пульта в Proteus, но немогу переделать альтернативную прошивку для МК8051 под свой микроконтроллер. Прошу помочь, кто понимает в программировании.
Алексей, а Вам не сюда разве?
/* One full rotation = 130*120*48*2 = 1497600 halfsteps Star Day = 86164.091s ( 86164,090530833 ñ.) F_halfsteps = 17.380790334 HzF_cpu = 3579545 HzDividing Factor = (F_cpu/12)/F_halfsteps = 17162.36Total Counter For Timer = 17162 = 195*88+2 (or 220*78+2) = = (TIMER0_COUNT)*(TIME_PERIOD_1x) + TIMER0_COUNT_ADJNote that TIMER0_COUNT_ADJ can be negative butmake sure that (TIMER0_COUNT+TIMER0_COUNT_ADJ) is between 0 and 256*/
Total Counter For Timer = 17162 = 195*88+2 (or 220*78+2)
расчет количества полушагов в полном обороте. Число 130 это кол-во зубов в монтировке. В EQ5 их 144. Что означают числа 120 и 48?
откуда числа 195, 88 и 2?
инверторы только эти там глаза мозолят
PS схему забрал, может кода дойдут руки под нее прошивку написать для 2051.
то что нельзя допускать логических нулей на портах Р1.4, 1.7 и Р1.5, 1.6 одновременно? Иначе
Выложу еще файл в си, который я продолжаю перекраивать под 2051 из прошивки GTA.
volatile __bit btnPressed; __code unsigned char P1_OUT[] = ... void timer0_isr() __interrupt TF0_VECTOR __using 1 {}
// check if any button is pressedbtnPressed = 0;// RA buttonsif(registerR2x == PRESSED){ // [>>] 2x forward directionRA = directionMainRA; tmpPeriodRA = TIME_PERIOD_1x / 2; btnPressed = 1;}else if(registerL2x == PRESSED){ // [<<] 2x back directionRA = 0; // stop motor @ current position tmpPeriodRA = TIME_PERIOD_1x / 2; // doesn't matter btnPressed = 1;}else if(registerR8x == PRESSED){ // [>>] 8x forward directionRA = directionMainRA; tmpPeriodRA = TIME_PERIOD_1x / 8; btnPressed = 1;}else if(registerL8x == PRESSED){ // [<<] 8x back directionRA = -(directionMainRA); // move back tmpPeriodRA = TIME_PERIOD_1x / 8; btnPressed = 1;}else{ // No RA button is pressed -> plain tracking @ sideral speed directionRA = directionMainRA; tmpPeriodRA = TIME_PERIOD_1x;}timePeriodRA = tmpPeriodRA;
// DEC buttonsif(registerR8x == PRESSED || registerL8x == PRESSED){ if(registerR8x == PRESSED) directionRA = DIR_MAIN_RA; // [UP] else directionRA = -(DIR_MAIN_RA); // [DOWN] btnPressed = 1;}else{ // stop DEC drive directionRA = 0;}
При включении горят 2 светодиода
и молчит ШД.
Если ничего не найду буду трясти Keil.
Сегодня прошил микроконтроллер на программаторе
рекомендую временно отключить обработку пониженного питания
LEDRed = LED_ON;LEDGreen = LED_ON;
кстати, неплохо бы убедиться, что микроконтроллер действительно прошился.
Отключил обработку пониженного питания. Прошил. В результате, при включении пульта горит зелёный светодиод. При нажатии на кнопки загорается красным.
ШД не вращается.
Это не подойдёт? http://www.motionking.com/Products/PM_Stepper_Motors/42PM_Stepper_Motor.htm