본문 바로가기

전체 글

gy-86 도착 알리에서 구매했던 gy -86이 도착했다 모듈구성은 mpu6050-HMC5883, 그리고 MS5611 로 구성되어있다. mpu6050과 HMC5883은 요즘 쓰이는 가속도자이로 지자기계로 일반적이지만 이에구성되어있는 MS5611은 기압센서중 성능이 bmp085보다 좋다. 스펙상 성능은 같지만 실제로 구동시 차이가 많이난다. ms5611은 구하기힘들지만.. 알리에선 이모듈을 14달러... 무료배송으로 8일만에 도착. 현재 고도 정보만 뽑은 스샷이다. real time으로 봤을땐 오차가 0.5m정도 난다 그래서 50샘플단위로 평균 필터사용결과 0.1m정도 오차가있는걸 볼수있엇다.. 매우만족!! 더보기
오실로스 코프 구매 집에서 공부하려는 용도로 오실로스코프를 알아봤다. 보통 신품 기준 70~100만원 이상 .... 내수준으로 감당이 되지 않는다. 그래서 혹시나 해서 알리 익스프레스에서 알아보던중 Hantek 사의 DSO계열 발견.. 200달러 대에 구매할수있다니.. 일단 바로 구매결정. feedback 가장 많고 괜찮은 딜러로 결정! 5일 걸려서 도착했다. 일단 Display 매우 좋고 auto set 기능도 잘된다. lcd 에 파형 표시되는게 딜레이가 조금있긴하지만... 싸니까! 모든게용서된다. 100MHz 로 주문했지만 딜러가 70MHz로 배송해서 부분환불 해준단다... ㅜㅡ 더보기
대기압 센서로 고도 측정하기 bmp085 의 data sheet의 있는식을 변환해서 적어본다. altitude = 44330 * (1.0 - pow(pressure /sealevelPressure,0.1903)); 아래는 github에 올라와있는 압력 읽어오는 part. arduino 코드라 128에 맞게 포팅시키면 될듯. int32_t Adafruit_BMP085::readPressure(void) { int32_t UT, UP, B3, B5, B6, X1, X2, X3, p; uint32_t B4, B7; UT = readRawTemperature(); UP = readRawPressure(); #if BMP085_DEBUG == 1 // use datasheet numbers! UT = 27898; UP = 23843; ac6.. 더보기
atmega128 16bit씩 shift parsing법 -by 키트 long Tempdata, high, low; // 세개 변수가 모두 long으로 선언 되었든지 // long Tempdata; // 하나만 long으로 선언 되고 int high, low; // 두개는 int로 선언 한 후 Tempdata = (high 더보기
모터 동작 개념및 코드 우리가 사용하는 모터드라이버는 500HZ까지 인식한다. 500HZ->1/500 = 2ms 이므로 2ms 주기까지 인식한다는 뜻이다. atmega128로 짠 코드로는 Sensor update 가 200hz, 모터 제어주기는 400hZ로 동작한다. 이것이 의미하는 바는 센서 센서값이 1번들어올때 모터 동작을 2번 해준다는 것이다. (물론 생각대로 정확할진 모름...) 이 모터드라이버의 시동방법은 최소 스로틀 입력을 주면 삐~ 하는소리와함께 시동이 걸린다. 그후 원하는 pwm을 입력하면 그에 맞는 모터출력이 나오게된다. 타이머1,3를 사용했으며 분주비는 1/8 따라서 1count 당 2Mhz -> 0.5us 이다. 모터출력부분 코드는 아래와같다. while(set1) { duty1 = 1800; duty2 =.. 더보기
printf printf...... 센서값이 정확한지 눈으로 보기위해 일반적으로 쓰는 printf.. 이게 atmega128의 연산능력을 엄청나게 잡아먹는걸 최근에서야 알았다. 센서값 통신에서 가끔가다 값자체가 튀는 현상이 발생한다 분명히 checksum으로 통신 에러를 검출해냈음에도 센서값오류가 발생.. 겨우 센서값 통신오류를 잡았다고 생각했을때! 센서값은 정상적으로 보이는데 pid값만 확 튀어버리는값 발생.. 이로인해 pwm duty비가 너무올라가 모터가 갑자기 멈추어버리는현상이나왓다... 문제가 해결되지않아 printf 출력부분을 다 제거하였더니 이거왠걸.. 너무 정확하게 제어가 잘되었다... 그래서 초기 셋팅 할때에만 serial로 값을받아보고 호버링 시킬때는 값 출력을 빼는게 좋겠다는 결론이 나왓다. 더보기
atmega128 사용기 atmega128 은 8bit processor로 동작속도는 16MHz 를 사용했다. 학부과정에서 주로 다루어 오는 MCU이다. 그래서 쿼드콥터 제작에도 128을 사용하기로 하고 제작에 들어갔다. 수업외 MCU 사용은 처음이기에 코딩 프로그램이 필요하였다. 그래서 ATMEL사에서 제공하는 최신버젼인 ATMEL Studio 6.1버젼으로 진행하였다. 수업시간에 다루던 방법대로 uart통신 및 타이머인터럽트 관련 소스들을 긁어서 동작테스트를 진행하였었다. 하지만 뿜어내는 error.... 분명 학교에서 할땐 잘되던것이었는데??? 알아보니 인터럽트 허용 sreg 명령이 듣질않는다... 라이브러리를 펼쳐보니 sreg부분은 누락되어있네??? 그래서 sei(),cli()로 사용.. 그리고 avredit에서 사용하던.. 더보기
쿼드콥터 부품선정-2 -센서파트- FB155BC(SPP+HID) http://www.devicemart.co.kr/1111784 MPU6050 6축 자이로 가속도 센서 모듈 http://www.devicemart.co.kr/38329 테스트용으로 사용하다 실사용은 새로구매 IMU AHRS 10DOF Dragon http://www.devicemart.co.kr/38331 더보기