Skocz do zawartości

Ven_64

Użytkownicy
  • Zawartość

    105
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

Ven_64 wygrał w ostatnim dniu 22 kwietnia 2014

Ven_64 ma najbardziej lubianą zawartość!

Reputacja

3 Neutralna

O Ven_64

  • Ranga
    5/10
  • Urodziny 06.01.1999

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Legnica
  1. Odczyt odbywa się poprzez pomiar czasu rozładowania kondensatora. Należy podać stan wysoki na wyjściu czujnika, odczekać 10us, ustawić pin na wejście bez rezystora pull-up i mierzyć czas rozładowania. Przynajmniej tak to rozumiem. Jakbym się przed zakupem bardziej w to zagłębił to pewnie wybrał bym wersje analogową... Ale cóż. Nie wiem dlaczego nie działa. Samo sterowanie silnikami działa jeśli if jest prawdziwy.
  2. Po dłuższej przerwie od programowania i robotyki, zabrałem się za forbotowy kurs stm32, i budowę prostego LFa na bazie nucleo i QTR_8RC. Mam jednak problem z oprogramowaniem tych czujników, gdyż są dość nietypowe w obsłudze. Są one zasilane z 3,3v. Program ma sprawdzać czujniki i jeżeli pierwszy z nich coś wykryje załączyć na 5s silniki. Kod wygląda następująco: /** Spis pinow A_PHASE - PC_0 B_PHASE - PC_1 A_ENABLE - PB_8 B_ENABLE - PB_9 MODE - PC_2 LED_ON - PC_3 1_qtr - PC_4 2_qtr - PC_5 3_qtr - PC_6 4_qtr - PC_7 5_qtr - PC_8 6_qtr - PC_9 7_qtr - PC_10 8_qtr - PC_11 PB6, PB7, PB8, PB9 - PWM - TIM4 */ #include "stm32f10x.h" #include "stm32f1xx_nucleo.h" volatile uint32_t timer_us = 0; short signal [8]; void SysTick_Handler() { if (timer_us) { timer_us--; } } void delay_us(int time) { timer_us = time; while (timer_us) {}; } void sensor() { GPIO_InitTypeDef gpio; GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_3; gpio.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &gpio); GPIO_SetBits(GPIOC, GPIO_Pin_3); // LEDON ON gpio.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11; gpio.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &gpio); GPIO_SetBits(GPIOC, GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11); // Ladowanie kondensatorow delay_us(12); //12us na naladowanie GPIO_ResetBits(GPIOC, GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11); // koniec ladowania gpio.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5| GPIO_Pin_6| GPIO_Pin_7| GPIO_Pin_8| GPIO_Pin_9| GPIO_Pin_10| GPIO_Pin_11; gpio.GPIO_Mode = GPIO_Mode_IN_FLOATING; // zmiana trybu na wejscie bez podciagniecia GPIO_Init(GPIOC, &gpio); signal [0] = 0; // zerowanie odzczytow signal [1] = 0; signal [2] = 0; signal [3] = 0; signal [4] = 0; signal [5] = 0; signal [6] = 0; signal [7] = 0; while(1) { if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == 1) { signal[0] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5) == 1) { signal[1] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == 1) { signal[2] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == 1) { signal[3] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) == 1) { signal[4] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_9) == 1) { signal[5] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_10) == 1) { signal[6] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_11) == 1) { signal[7] +=1; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_4) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_9) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_10) == 0 && GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_11) == 0) { break; // przerwanie pętli po rozladowaniu } delay_us (1); } GPIO_ResetBits(GPIOC, GPIO_Pin_3); // LEDON OFF } int main(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); GPIO_InitTypeDef gpio; TIM_TimeBaseInitTypeDef tim; TIM_OCInitTypeDef channel; GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9; gpio.GPIO_Speed = GPIO_Speed_50MHz; gpio.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &gpio); TIM_TimeBaseStructInit(&tim); tim.TIM_CounterMode = TIM_CounterMode_Up; tim.TIM_Prescaler = 20 - 1; tim.TIM_Period = 100 - 1; //32kHz TIM_TimeBaseInit(TIM4, &tim); TIM_OCStructInit(&channel); channel.TIM_OCMode = TIM_OCMode_PWM1; channel.TIM_OutputState = TIM_OutputState_Enable; channel.TIM_Pulse = 0; TIM_OC3Init(TIM4, &channel); channel.TIM_Pulse = 0; TIM_OC4Init(TIM4, &channel); TIM_Cmd(TIM4, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; gpio.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &gpio); gpio.GPIO_Pin = GPIO_Pin_13; gpio.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOC, &gpio); SysTick_Config(SystemCoreClock / 1000000); // automatycznie wywoluje systick handler co 1us int main_counter = 0; while(1) { sensor(); if (signal [0] != 0) { GPIO_SetBits(GPIOC, GPIO_Pin_2); // MODE << 1 GPIO_SetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1); // kierunek do przodu channel.TIM_Pulse = 50; //50% PWM TIM_OC3Init(TIM4, &channel); channel.TIM_Pulse = 50; //50% PWM TIM_OC4Init(TIM4, &channel); while(main_counter < 5000)//5s { main_counter += 1; delay_us(1000); } channel.TIM_Pulse = 0; TIM_OC3Init(TIM4, &channel); channel.TIM_Pulse = 0; TIM_OC4Init(TIM4, &channel); main_counter = 0; } } } Siedzę nad tym już parę dni i dalej nie wiem co jest nie tak
  3. Niebieskie ścieżki - bottom - to warstwa dolna, czerwone - top to warstwa górna. Widok jest z góry, tylko wszystkie ścieżki są widoczne, tak jakby nie było laminatu. Możesz wybrać warstwę z rozwijanej listy (lewy górny róg, na dole paska). Z tym stabilizatorem to nie wiem, w dokumentacji L7805 jest napisane, że dropout to 2V do max. 2,5V. A te 3A to niby tylko na chwilowe obciążenie... Chyba że to nie L7805. Jakich chcesz użyć silników? Nie lepiej zasilić bezpośrednio z aku?
  4. Dodaj przycisk reset (zwierający do masy) - może się przydać. Dodaj też podciągnięcie rezystorem do vcc na resecie. Chcesz zasilać silniki z 5v przez stabilizator? Całość będziesz zasilać z LiPo 2s?
  5. Ven_64

    Schemat lf Nowy/Sprawdzenie/Poprawa

    Gęstość nie wiem, ale raczej dość małą. Ale nada się, zobacz na roboty z katalogu - wiele z nich ma taką obudowę.
  6. Ven_64

    Schemat "Czułkobota"

    Dodaj złącze do programowania, chyba, że używasz podstawki programującej. Podciągnij reset do vcc, przez rezystor 10k. Mógłbyś dodać po kondensatorze 100n równolegle do każdego silnika i filtrowanie zasilania mostka (zobacz jak to zrobili tutaj) Zamiast plątaniny połączeń możesz dać vcc i gnd w kilku miejscach, a sygnały zrobić labelami (to "ABC") o takich samych nazwach, będzie czytelniej. PS. Przycisk reset może się przydać, jeśli nie masz włącznika w koszyku z bateriami(?) to dodaj go.
  7. Ven_64

    Problem z programem (Bascom) do serwomechanizmu

    Zobacz w dokumentacji (rezonator). Ps. Podciągnij reset do vcc przez r 10k. I dodaj filtrację zasilania przy uC.
  8. Ven_64

    Lista małych zmian na Forbocie

    Jak dla mnie po prostu za blade te kolory, ale może to tylko moje zdanie, lub przyzwyczajenie...
  9. Sprawdź kamerką z telefonu czy czujnik świeci. Może źle podłączyłeś?
  10. Ven_64

    [minisumo] Shinigami

    Większość części wczoraj przyszła, czekam jeszcze na mostki z TME. Niestety upatrzone akumulatory(Redox 3s 700mAh 20C) były niedostępne, więc będę się musiał zadowolić Dualsky 3s 400mAh 35C . Zdecydowałem się jednak na silniki 30:1HP. Z braku kasy kupiłem tymczasowo koła solarbotics. O których szkoda gadać. Wprowadziłem poprawki do płytki dolnej i górnej. W dolnej poprawiłem obudowy kondensatorów - niektórych nie było w smd, a te które były w smd nie miały w opisie informacji o obudowie, wiec musiałem sprawdzić na żywo. Oddaliłem też trochę rezonator od silników, choć nadal jest blisko. Jest się czego bać? Może przylutuje po przeciwnej stronie płytki niż silniki... W górnej dodałem wspomniane rezystory podciągające do 3,3v i filtry RC dla tactów. Po poprawkach prezentują się one tak: Górna: Dolna: W dolnej płytce napotkałem problem z masą przy mostku, a mianowicie chciałbym, aby masa rozlała się tak, jak zabazgrałem poniżej Czy da się to zrobić inaczej niż ręcznie kombinując ze ścieżkami? Jeśli wszystko ok z płytkami to niedługo je zamówię. Padło na Satland, chyba Was tym specjalnie nie zaskoczyłem Ale po prostu tylko oni w normalnej cenie robią płytki z 2mm laminatu, którego potrzebuję na dolną, żeby mieć pewność, żę ścieżki nie pękną, czy cóś. Tylko ta zielona soldermaska - nie przepadam za tym kolorem.
  11. Ven_64

    Niekonwencjonalne wykorzystanie SHARPa

    Tylko lustro nie odbija IR. Testowałem kiedyś na fototranzystorze i diodzie IR oraz na module z ktirem.
  12. Ven_64

    [minisumo] Shinigami

    Satlanda znam, ale nie jestem z niego zbyt zadowolony, więc chcę poszukać jakiejś innej firmy, która robiłaby taniej i szybciej. Choć może szukam igły w stogu siana... Ktoś na forum zamawiał w chinach i to dość tanio, ale boje się, że może to trwać dużo dłużej. Wiem, żę jest trochę innych firm z Polski i Europy.
  13. Ven_64

    [minisumo] Shinigami

    Po kilku próbach, które mnie mocno zniechęciły, zabrałem się po raz kolejny do projektowania płytki dolnej i w końcu sukces! Pozostały mi tylko ewentualne poprawki i szukanie błędów. A oto jak się prezentuję: Prosiłbym Was o przejrzenie. Mam też do Was parę pytań: Czy nie będzie problemów z trawieniem płytki (firma) jeżeli DRC sygnalizuje minimalnie za bliskie odległości? Czy należy się obawiać za małej odległości elementów/ścieżek od krawędzi płytki - również minimalnie? I czy polecacie jakieś firmy, gdzie tanio można zamówić pcb? Po ewentualnych poprawkach, zabiorę się jeszcze raz za górną płytkę - dodam podciąg dla tactów, wyrównam złącze FFC i może dodam filtr RC na drgania styków.
  14. Ven_64

    [minisumo] Shinigami

    Treker, to przez otwory m2, które swoją drogą mają kiepski rozstaw, bo jeśli chce się zamontować wyświetlacz tak jak ja podwieszając, to odległość od krawędzi to tylko 1mm . Zrobiłem już górną płytkę (to sam "interfejs użytkownika"). Niema tu zbyt wiele, ale prosiłbym zerknąć czy wszystko ok. Płytki będą łączone zif'em 1mm i goldpinami(zasilanie). Z dolną płytką był problem z upchaniem vhn'ów, więc zmieniłem je na L6205D (maks 2,8A na kanał), zmianie uległo też zasilanie diod nadawczych - zmienione na 5v. Poniżej schemat (płytki dolnej), prosiłbym sprawdzić, czy dobrze mam ten mostek podłączony
  15. Ven_64

    [minisumo] Shinigami

    Planuje użyć taki 0,96 calowy wyświetlacz. Zdecydowałem się jednak na I2C.
×