라디오 전자 및 전기 공학의 백과사전 간단한 로봇. 무선 전자 및 전기 공학 백과사전 이 기사에서는 간단한 "로봇"의 다이어그램을 제시합니다. 그는 빛으로 가고 광원이 없으면 "자유 검색"모드가 활성화됩니다. 로봇이 운전하고 충돌이 발생하면 차를 몰고 돌아갑니다. 로봇의 핵심은 ATMEL 마이크로컨트롤러(AT90S2313)이지만 이 회사의 다른 제품을 사용할 수 있습니다. 이 마이크로컨트롤러에는 프로그램용 메모리 2kb, 입력/출력 포트 15개, 사용 가능한 전원(4-6V)이 있습니다. 엔진은 L293D 마이크로 회로(국내 아날로그는 KR1128KT4A)인 "엔진 드라이버"에 의해 제어됩니다. 센서로 포토 레지스터 SF3-1을 사용하기로 결정했습니다. 로봇은 두 개의 모터로 구성됩니다. 다음은 특정 작업에 대해 작동하는 방식입니다.
회로에서 사용되는 무선 요소: 마이크로컨트롤러 AT90S2313 Microcircuit L293D (국내 아날로그 - KR1128KT4A) 2 포토레지스터 SF3-1 4MHz에서 석영 커패시터 22-24pF 안정기 7805(또는 KREN5A) 100옴 저항(옵션) 두 개의 모터 전원 Vbat - 4개의 AA 배터리 또는 1개의 크라운(9V) 전원 공급 장치 Vm - 1 크라운(9V) 회로를 조립한 후 프로그램을 마이크로 컨트롤러에 다운로드해야 로봇이 준비됩니다. /**************************************************** **** *** 칩 유형: AT90S2313 클록 주파수: 4,000000MHz 메모리 모델: 초소형 외부 SRAM 크기: 0 데이터 스택 크기: 32 ************************************************** ***** **/#포함 <90s2313.h> #포함 #포함 // 주변기기 작업의 편의를 위한 정의 할당 #아웃 포트 정의 #MOTOR_F 7 정의 #MOTOR_B 정의 6 #TURN_R 5 정의 #TURN_L 4 정의 #핀드로 정의 #LIGHT_R 0 정의 #LIGHT_L 1 정의 #define BUMPER_F 2 #BUMPER_B 3 정의 // 가능한 운전 모드 열거형 {STOP, F, FR, FL, B, BR, BL}; //------------------------------------------------ --------------------------------------------- // 지연 t x 10ms //------------------------------------------------ --------------------------------------------- 무효 Delay_10ms(부호 없는 문자 t) {차이; for(i=0;i // 이동 방향을 선택하기 위한 확률 테이블 // 현재 이동 방향을 기준으로 부호 없는 문자 p[7][7] = {14, 43, 57, 71, 86, 93, 100, 7, 43, 71, 100, 100, 100, 100, 7, 50, 93, 100, 100, 100, 100, 7, 50, 57, 100, 100, 100, 100, 29, 29, 29, 29, 57, 79, 100, 36, 36, 36, 36, 71, 93, 100, 36, 36, 36, 36, 71, 79, 100}; // 현재 이동 방향 서명되지 않은 문자 this_move; //------------------------------------------------ --------------------------------------------- // 주어진 방향으로 이동하기 위해 모터 조합을 켭니다. //------------------------------------------------ --------------------------------------------- void go(부호 없는 문자 방향){ 스위치(방향) { 케이스 중지: OUT.MOTOR_F=0; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=0; 하다; 케이스 F: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=0; 하다; 케이스 FR: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=1; OUT.TURN_L=0; 하다; 케이스 FL: OUT.MOTOR_F=1; OUT.MOTOR_B=0; OUT.TURN_R=0; OUT.TURN_L=1; 하다; 사례 B: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=0; OUT.TURN_L=0; 하다; 케이스 BR: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=1; OUT.TURN_L=0; 하다; 케이스 BL: OUT.MOTOR_F=0; OUT.MOTOR_B=1; OUT.TURN_R=0; OUT.TURN_L=1; 하다; } } //------------------------------------------------ --------------------------------------------- // 확률표에 따라 다음 단계의 이동 방향 선택 //------------------------------------------------ --------------------------------------------- 서명되지 않은 문자 next_move(무효){ 부호 없는 charpp, i; pp = 랜드()/327; // 난수 0..99를 얻습니다. for (i=0;i<7;i++){ // 확률표에서 일치하는 항목 찾기 if (p[this_move][i] > pp) break; } this_move = i; // 새로 받은 방향을 현재 방향으로 씁니다. 반환(i); } //------------------------------------------------ --------------------------------------------- // 앞 범퍼 인터럽트 처리(INT0 = PD2) //------------------------------------------------ --------------------------------------------- 인터럽트 [EXT_INT0] 무효 ext_int0_isr(무효) { if(this_move==FR) go(BL); if(this_move==FL) 이동(BR); 그렇지 않으면 go(B); 지연_10ms(250); // 2.5 x 2초 이내 출발 지연_10ms(250); this_move=B; } //------------------------------------------------ --------------------------------------------- // 리어 범퍼 인터럽트 처리(INT1 = PD3) //------------------------------------------------ --------------------------------------------- 인터럽트 [EXT_INT1] 무효 ext_int1_isr(무효) { if(this_move==BR) go(FL); if(this_move==BL) go(FR); 그렇지 않으면 이동(F); 지연_10ms(250); // 2.5 x 2초 이내 출발 지연_10ms(250); this_move=F; } //------------------------------------------------ --------------------------------------------- // "무작위 걷기" //------------------------------------------------ --------------------------------------------- 서명되지 않은 문자 워크(무효){ // 이 루프는 "자유 로밍"을 구성하는 반면 // 광 센서로부터 신호가 없음 동안((IN.LIGHT_R) && (IN.LIGHT_L)){ 이동(다음_이동()); // 다음 이동 방향을 얻고 지연_10ms(250); // 이 방향으로 2.5초 이동 } // 이 루프는 빛으로의 이동을 구성하는 동안 // 적어도 하나의 광 센서로부터의 신호가 있습니다. 동안((IN.LIGHT_R==0) || (IN.LIGHT_L==0)){ if((IN.LIGHT_R==0) && (IN.LIGHT_L==0)) go(F); 그렇지 않으면 if(IN.LIGHT_R==0) go(FR); 그렇지 않으면 if(IN.LIGHT_L==0) go(FL); } 리턴(0); } //------------------------------------------------ --------------------------------------------- // 메인 프로그램 //------------------------------------------------ --------------------------------------------- 무효 메인 (무효) { DDRB=0xff; // 포트 B의 모든 라인을 출력에 할당 포트 = 0x00; // 낮은 값으로 설정 DDRD=0x00; // 포트 D의 모든 라인을 입력에 할당 PORTD=0xff; // 내부 부하 저항 연결 // 외부 인터럽트 초기화 // INT0: 켜짐 // INT0 모드: 하강 에지 // INT1: 켜짐 // INT1 모드: 하강 에지 김스크=0xC0; MCUCR=0x0A; GIFR=0xC0; // 인터럽트 활성화 #asm("세이") // 메인 루프 시작 동안(1) 걷기(); } sPlan 형식의 프로그램, 펌웨어 파일 및 로봇 다이어그램 다운로드 간행물: cxem.net 다른 기사 보기 섹션 무선 제어 장비. 읽고 쓰기 유용한 이 기사에 대한 의견. 과학 기술의 최신 뉴스, 새로운 전자 제품: 터치 에뮬레이션을 위한 인조 가죽
15.04.2024 펫구구 글로벌 고양이 모래
15.04.2024 배려심 많은 남자의 매력
14.04.2024
다른 흥미로운 소식:
무료 기술 라이브러리의 흥미로운 자료: ▪ 기사 최초의 인간 심장 이식 수술은 누가, 언제 시행했습니까? 자세한 답변 ▪ 기사 서점 기지의 직원, 수집가. 노동 보호에 관한 표준 지침 ▪ 기사 전자 태그. 무선 전자 및 전기 공학 백과사전 ▪ 기사 선형 안정기, 5암페어. 무선 전자 및 전기 공학 백과사전 이 페이지의 모든 언어 홈페이지 | 도서관 | 조항 | 사이트 맵 | 사이트 리뷰 www.diagram.com.ua |