instructables VHDL ਮੋਟਰ ਸਪੀਡ ਕੰਟਰੋਲ ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼ ਅਤੇ ਸਪੀਡ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ
ਨੋਟ: ਇਹ ਪੰਨਾ ਇੱਕ ਵੱਡੇ ਬਿਲਡ ਦਾ ਇੱਕ ਹਿੱਸਾ ਹੈ। ਕਿਰਪਾ ਕਰਕੇ ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰੋ ਕਿ ਤੁਸੀਂ ਇੱਥੇ ਸ਼ੁਰੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਜੋ ਤੁਸੀਂ ਸਮਝ ਸਕੋ ਕਿ ਅੱਗੇ ਦਿੱਤੇ ਵੱਡੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ ਕਿੱਥੇ ਫਿੱਟ ਹੁੰਦੇ ਹਨ
ਵੱਧview
ਮੋਟਰ ਸਪੀਡ ਅਤੇ ਦਿਸ਼ਾ ਨਿਯੰਤਰਣ ਫੋਟੋਡਿਟੈਕਟਰ ਰੋਬੋਟ ਵਿੱਚ ਦੋ ਮੁੱਖ ਭਾਗਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ, ਦੂਜਾ ਇੱਕ ਫੋਟੋਡਿਟੈਕਟਰ ਜਾਂ ਲਾਈਟ ਡਿਟੈਕਟਰ ਡਿਵੀਜ਼ਨ ਹੈ। ਜਦੋਂ ਕਿ ਫੋਟੋਡਿਟੈਕਟਰ ਡਿਵੀਜ਼ਨ ਰੋਬੋਟ ਦੀ ਦ੍ਰਿਸ਼ਟੀ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦਾ ਹੈ, ਮੋਟਰ ਸਪੀਡ ਅਤੇ ਦਿਸ਼ਾ ਨਿਯੰਤਰਣ ਡਿਵੀਜ਼ਨ ਰੋਬੋਟ ਦੀ ਗਤੀ 'ਤੇ ਕੇਂਦ੍ਰਤ ਕਰਦਾ ਹੈ। ਮੋਟਰ ਦੀ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਨਿਯੰਤਰਣ ਪ੍ਰਕਿਰਿਆ ਡੇਟਾ ਫੋਟੋਡਿਟੈਕਟਰ ਡਿਵੀਜ਼ਨ ਤੋਂ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਮੋਟਰ ਅੰਦੋਲਨ ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ਭੌਤਿਕ ਆਉਟਪੁੱਟ ਦਿੰਦਾ ਹੈ।
ਇਸ ਡਿਵੀਜ਼ਨ ਦਾ ਉਦੇਸ਼ ਰੋਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਵਾਲੇ ਰੋਬੋਟ ਦੇ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਦੋਵੇਂ ਮੋਟਰਾਂ ਦੀ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਨੂੰ ਨਿਯੰਤਰਿਤ ਕਰਨਾ ਹੈ। ਇਹਨਾਂ ਮੁੱਲਾਂ ਦਾ ਫੈਸਲਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਕੈਮਰੇ ਦੁਆਰਾ ਕੈਪਚਰ ਕੀਤੇ ਗਏ ਅਤੇ ਥ੍ਰੈਸ਼ਹੋਲਡਿੰਗ ਦੁਆਰਾ ਪ੍ਰਕਿਰਿਆ ਕੀਤੀ ਗਈ ਰੌਸ਼ਨੀ ਦੇ ਆਕਾਰ ਅਤੇ ਸਥਿਤੀ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਤੁਹਾਨੂੰ ਹਰੇਕ ਮੋਟਰ 'ਤੇ ਮਾਪੀ ਗਤੀ ਦੀ ਵੀ ਲੋੜ ਪਵੇਗੀ। ਇਹਨਾਂ ਇਨਪੁਟਸ ਤੋਂ, ਤੁਸੀਂ ਹਰੇਕ ਮੋਟਰ ਲਈ PWM (ਪਲਸ-ਚੌੜਾਈ ਮੋਡੂਲੇਸ਼ਨ) ਮੁੱਲ ਨੂੰ ਆਉਟਪੁੱਟ ਕਰਨ ਦੇ ਯੋਗ ਹੋਵੋਗੇ।
ਇਸ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇਹ VHDL ਮੋਡੀਊਲ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੋਵੇਗੀ (ਹੇਠਾਂ ਲਿੰਕ ਵੀ):
- ਕੰਟਰੋਲ
- ਗਲਤੀ ਦੀ ਗਣਨਾ
- ਬਾਈਨਰੀ ਪਰਿਵਰਤਨ
- ਇੱਕ ਰੋਸ਼ਨੀ ਸਰੋਤ ਦੀ ਅਣਹੋਂਦ
ਤੁਸੀਂ ਇੱਥੇ ਇਸ ਡਿਵੀਜ਼ਨ ਲਈ VHDL ਕੋਡ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ।
ਸਪਲਾਈ
ਅਸੀਂ ISE ਡਿਜ਼ਾਈਨ ਸੂਟ 14.7 ਨਾਲ ਕੋਡ ਕਰਨ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ ਕਿਉਂਕਿ ਇਹ VHDL ਵਿੱਚ ਕੋਡ ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਕੋਡ ਨੂੰ BASYS 3 ਵਿੱਚ ਅੱਪਲੋਡ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ Vivado (ver. 2015.4 ਜਾਂ 2016.4) ਨੂੰ ਸਥਾਪਤ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ ਅਤੇ .xdc ਐਕਸਟੈਂਸ਼ਨ ਦੇ ਨਾਲ ਕੰਸਟਰੈਂਟ ਲਿਖਣਾ ਹੋਵੇਗਾ।
VHDL ਮੋਟਰ ਸਪੀਡ ਕੰਟਰੋਲ: ਦਿਸ਼ਾ ਅਤੇ ਗਤੀ ਦਾ ਫੈਸਲਾ ਕਰੋ, ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ: ਪੰਨਾ 1
ਨਿਰਦੇਸ਼ ਕਦਮ
ਕਦਮ 1: ਨਿਯੰਤਰਣ
ਇਹ ਸਮਝਣ ਲਈ ਕਿ ਰੋਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਵਾਲੇ ਰੋਬੋਟ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਕਿਵੇਂ ਨਿਯੰਤਰਿਤ ਕਰਨਾ ਹੈ, ਅਸੀਂ ਰੋਬੋਟ ਦੇ ਲੋੜੀਂਦੇ ਵਿਵਹਾਰ ਦੀ ਵਿਆਖਿਆ ਕਰਾਂਗੇ ਜਦੋਂ ਇਹ ਰੋਸ਼ਨੀ ਦੇ ਸਰੋਤ ਨੂੰ ਵੇਖਦਾ ਹੈ। ਇਹ ਵਿਵਹਾਰ ਪ੍ਰਕਾਸ਼ ਸਰੋਤ ਦੀ ਸਥਿਤੀ ਅਤੇ ਆਕਾਰ ਦੇ ਅਨੁਸਾਰ ਨਿਯੰਤਰਿਤ ਕੀਤਾ ਜਾਵੇਗਾ.
ਵਰਤਿਆ ਗਿਆ ਐਲਗੋਰਿਦਮ ਇੱਕ RC ਰੋਬੋਟ ਕੰਟਰੋਲਰ ਦੇ ਸਮਾਨ ਹੈ, ਇੱਕ ਲੀਵਰ ਜਿਸ ਨੂੰ ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਮੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਅਤੇ ਇੱਕ ਹੋਰ ਲੀਵਰ ਜਿਸ ਨੂੰ ਅੱਗੇ ਜਾਂ ਪਿੱਛੇ ਮੋੜਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਰੋਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਇਹ ਰੋਬੋਟ ਇੱਕ ਸਿੱਧੀ ਲਾਈਨ ਵਿੱਚ ਅੱਗੇ ਵਧੇ ਜੇਕਰ ਰੋਸ਼ਨੀ ਦੇ ਸਰੋਤ ਦੀ ਸਥਿਤੀ ਰੋਬੋਟ ਦੇ ਸਾਹਮਣੇ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਲਈ, ਤੁਸੀਂ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਦੋਨਾਂ ਮੋਟਰਾਂ 'ਤੇ ਇੱਕੋ ਗਤੀ ਚਾਹੁੰਦੇ ਹੋ। ਜੇਕਰ ਰੋਬੋਟ ਦੇ ਖੱਬੇ ਪਾਸੇ ਰੋਸ਼ਨੀ ਸਥਿਤ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਸੱਜੀ ਮੋਟਰ ਖੱਬੇ ਮੋਟਰ ਨਾਲੋਂ ਤੇਜ਼ ਹੋਵੇ ਤਾਂ ਜੋ ਰੋਬੋਟ ਖੱਬੇ ਪਾਸੇ ਰੋਸ਼ਨੀ ਵੱਲ ਮੁੜ ਸਕੇ। ਇਸ ਦੇ ਉਲਟ, ਜੇਕਰ ਰੋਬੋਟ ਦੇ ਸੱਜੇ ਪਾਸੇ ਰੋਸ਼ਨੀ ਸਥਿਤ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਖੱਬੀ ਮੋਟਰ ਸੱਜੀ ਮੋਟਰ ਨਾਲੋਂ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧੇ ਤਾਂ ਜੋ ਰੋਬੋਟ ਸੱਜੇ ਪਾਸੇ ਰੋਸ਼ਨੀ ਵੱਲ ਮੁੜ ਸਕੇ। ਇਹ ਇੱਕ RC ਕੰਟਰੋਲਰ ਦੇ ਖੱਬੇ ਲੀਵਰ ਦੇ ਸਮਾਨ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਇਹ ਨਿਯੰਤਰਣ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਕੀ ਤੁਸੀਂ ਰੋਬੋਟ ਨੂੰ ਖੱਬੇ, ਸੱਜੇ ਜਾਂ ਸਿੱਧਾ ਹਿਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹੋ।
ਫਿਰ, ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਰੋਬੋਟ ਅੱਗੇ ਵਧੇ ਜੇਕਰ ਰੋਸ਼ਨੀ ਸਰੋਤ ਬਹੁਤ ਦੂਰ ਹੈ (ਛੋਟਾ ਰੋਸ਼ਨੀ ਸਰੋਤ), ਜਾਂ ਜੇ ਖੋਜਿਆ ਗਿਆ ਪ੍ਰਕਾਸ਼ ਸਰੋਤ ਬਹੁਤ ਨੇੜੇ ਹੈ (ਵੱਡਾ ਪ੍ਰਕਾਸ਼ ਸਰੋਤ) ਤੁਸੀਂ ਇਹ ਵੀ ਚਾਹੁੰਦੇ ਹੋ ਕਿ ਰੋਬੋਟ ਰੋਸ਼ਨੀ ਦੇ ਸਰੋਤ ਤੋਂ ਜਿੰਨਾ ਦੂਰ ਹੋਵੇ, ਰੋਬੋਟ ਓਨੀ ਹੀ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧਦਾ ਹੈ। ਇਹ ਇੱਕ RC ਕੰਟਰੋਲਰ ਦੇ ਸੱਜੇ ਲੀਵਰ ਦੇ ਸਮਾਨ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਨਿਯੰਤਰਣ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਤੁਸੀਂ ਅੱਗੇ ਜਾਂ ਪਿੱਛੇ ਜਾਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਅਤੇ ਤੁਸੀਂ ਇਸਨੂੰ ਕਿੰਨੀ ਤੇਜ਼ੀ ਨਾਲ ਅੱਗੇ ਵਧਣਾ ਚਾਹੁੰਦੇ ਹੋ।
ਫਿਰ ਤੁਸੀਂ ਹਰੇਕ ਮੋਟਰ ਦੀ ਗਤੀ ਲਈ ਇੱਕ ਗਣਿਤਿਕ ਫਾਰਮੂਲਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਅਸੀਂ -255 ਤੋਂ 255 ਦੇ ਵਿਚਕਾਰ ਸਪੀਡ ਰੇਂਜ ਚੁਣਦੇ ਹਾਂ। ਇੱਕ ਨੈਗੇਟਿਵ ਮੁੱਲ ਦਾ ਮਤਲਬ ਹੈ ਮੋਟਰ ਪਿੱਛੇ ਵੱਲ ਮੁੜੇਗੀ, ਜਦੋਂ ਕਿ ਇੱਕ ਸਕਾਰਾਤਮਕ ਮੁੱਲ ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਮੋਟਰ ਅੱਗੇ ਨੂੰ ਮੁੜੇਗੀ।
ਇਹ ਇਸ ਰੋਬੋਟ ਦੀ ਗਤੀ ਲਈ ਬੁਨਿਆਦੀ ਐਲਗੋਰਿਦਮ ਹੈ। ਇਸ ਮੋਡੀਊਲ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ, ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।
ਕਦਮ 2: ਗਲਤੀ ਦੀ ਗਣਨਾ
ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਕੋਲ ਪਹਿਲਾਂ ਹੀ ਮੋਟਰਾਂ ਲਈ ਟੀਚਾ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਹੈ, ਤੁਸੀਂ ਮੋਟਰਾਂ ਦੀ ਮਾਪੀ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਨੂੰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਜੇਕਰ ਇਹ ਸਪੀਡ ਟੀਚੇ 'ਤੇ ਪਹੁੰਚ ਗਿਆ ਹੈ, ਤਾਂ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਮੋਟਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਪਣੀ ਗਤੀ 'ਤੇ ਚੱਲੇ। ਜੇਕਰ ਅਜਿਹਾ ਨਹੀਂ ਹੈ, ਤਾਂ ਅਸੀਂ ਮੋਟਰ ਵਿੱਚ ਹੋਰ ਸਪੀਡ ਜੋੜਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਕੰਟਰੋਲ ਥਿਊਰੀ ਵਿੱਚ, ਇਸਨੂੰ ਬੰਦ-ਲੂਪ ਫੀਡਬੈਕ ਕੰਟਰੋਲ ਸਿਸਟਮ ਵਜੋਂ ਜਾਣਿਆ ਜਾਂਦਾ ਹੈ।
ਇਸ ਮੋਡੀਊਲ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ, ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।
ਕਦਮ 3: ਬਾਈਨਰੀ ਪਰਿਵਰਤਨ
ਪਿਛਲੀਆਂ ਗਣਨਾਵਾਂ ਤੋਂ, ਤੁਸੀਂ ਹਰੇਕ ਮੋਟਰ ਲਈ ਲੋੜੀਂਦੀ ਕਾਰਵਾਈ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਜਾਣ ਲਿਆ ਹੈ। ਹਾਲਾਂਕਿ, ਗਣਨਾ ਸਾਈਨਡ ਬਾਈਨਰੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਮੋਡੀਊਲ ਦਾ ਉਦੇਸ਼ ਇਹਨਾਂ ਹਸਤਾਖਰਿਤ ਮੁੱਲਾਂ ਨੂੰ ਇੱਕ ਮੁੱਲ ਵਿੱਚ ਬਦਲਣਾ ਹੈ ਜੋ PWM ਜਨਰੇਟਰ ਦੁਆਰਾ ਪੜ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜੋ ਕਿ ਦਿਸ਼ਾ (ਜਾਂ ਤਾਂ ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ ਜਾਂ ਉਲਟ-ਘੜੀ ਦੀ ਦਿਸ਼ਾ ਵਿੱਚ) ਅਤੇ ਗਤੀ (0 ਤੋਂ 255 ਦੇ ਵਿਚਕਾਰ) ਹਨ। ਨਾਲ ਹੀ, ਕਿਉਂਕਿ ਮੋਟਰ ਤੋਂ ਫੀਡਬੈਕ ਨੂੰ ਹਸਤਾਖਰਿਤ ਬਾਈਨਰੀ ਵਿੱਚ ਮਾਪਿਆ ਜਾਂਦਾ ਹੈ, ਇੱਕ ਹੋਰ ਮੋਡੀਊਲ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਤਾਂ ਜੋ ਹਸਤਾਖਰਿਤ ਮੁੱਲਾਂ (ਦਿਸ਼ਾ ਅਤੇ ਗਤੀ) ਨੂੰ ਇੱਕ ਹਸਤਾਖਰਿਤ ਮੁੱਲ ਵਿੱਚ ਬਦਲਿਆ ਜਾ ਸਕੇ ਜਿਸਦੀ ਗਣਨਾ ਗਲਤੀ ਗਣਨਾ ਮੋਡੀਊਲ ਦੁਆਰਾ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਸ ਮੋਡੀਊਲ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ, ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।
ਕਦਮ 4: ਰੋਸ਼ਨੀ ਦੇ ਸਰੋਤ ਦੀ ਅਣਹੋਂਦ
ਤੁਸੀਂ ਇੱਕ ਰੋਬੋਟ ਬਣਾਇਆ ਹੈ ਜੋ ਰੋਬੋਟ ਦੁਆਰਾ ਰੋਸ਼ਨੀ ਦਾ ਪਤਾ ਲੱਗਣ 'ਤੇ ਰੌਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਲਈ ਅੱਗੇ ਵਧਦਾ ਹੈ। ਪਰ ਕੀ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਰੋਬੋਟ ਰੋਸ਼ਨੀ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਾਉਂਦਾ? ਇਸ ਮੋਡੀਊਲ ਦਾ ਉਦੇਸ਼ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨਾ ਹੈ ਕਿ ਅਜਿਹੀ ਸਥਿਤੀ ਹੋਣ 'ਤੇ ਕੀ ਕਰਨਾ ਹੈ।
ਰੋਬੋਟ ਨੂੰ ਜਗ੍ਹਾ 'ਤੇ ਘੁੰਮਾਉਣ ਲਈ ਸਭ ਤੋਂ ਆਸਾਨ ਤਰੀਕਾ ਅਤੇ ਇੱਕ ਰੋਸ਼ਨੀ ਸਰੋਤ ਦੀ ਭਾਲ ਕਰਨਾ ਹੈ। ਕੁਝ ਸਕਿੰਟਾਂ ਲਈ ਘੁੰਮਣ ਤੋਂ ਬਾਅਦ, ਜੇਕਰ ਰੋਬੋਟ ਨੂੰ ਅਜੇ ਵੀ ਰੋਸ਼ਨੀ ਦਾ ਸਰੋਤ ਨਹੀਂ ਮਿਲਿਆ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਪਾਵਰ ਬਚਾਉਣ ਲਈ ਰੋਬੋਟ ਨੂੰ ਹਿੱਲਣਾ ਬੰਦ ਕਰ ਦੇਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਸਕਿੰਟਾਂ ਦੀ ਇੱਕ ਹੋਰ ਨਿਰਧਾਰਤ ਸੰਖਿਆ ਤੋਂ ਬਾਅਦ, ਰੋਬੋਟ ਨੂੰ ਰੋਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਲਈ ਦੁਬਾਰਾ ਆਪਣੀ ਥਾਂ 'ਤੇ ਘੁੰਮਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਮੋਡੀਊਲ ਬਾਰੇ ਹੋਰ ਜਾਣਨ ਲਈ, ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ।
ਕਦਮ 5: ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ
ਤੁਸੀਂ ਇਸ ਵਿਆਖਿਆ ਲਈ ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ। ਜਿਵੇਂ ਕਿ ਇਸ ਹਦਾਇਤ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਦੱਸਿਆ ਗਿਆ ਹੈ, ਤੁਹਾਨੂੰ ਥ੍ਰੈਸ਼ਹੋਲਡ ਡਿਵੀਜ਼ਨ ਤੋਂ ਇਨਪੁਟਸ "ਆਕਾਰ" ਅਤੇ "ਸਥਿਤੀ" ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਇਹ ਇਨਪੁਟਸ ਵੈਧ ਸਨ (ਉਦਾਹਰਨ ਲਈampਲੇ, ਜਦੋਂ ਤੁਸੀਂ ਆਕਾਰ = 0 ਪ੍ਰਾਪਤ ਕਰਦੇ ਹੋ, ਤਾਂ ਆਕਾਰ ਸੱਚਮੁੱਚ ਜ਼ੀਰੋ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਕੈਮਰਾ ਰੌਸ਼ਨੀ ਦਾ ਪਤਾ ਨਹੀਂ ਲਗਾਉਂਦਾ ਹੈ, ਅਤੇ ਇਸ ਲਈ ਨਹੀਂ ਕਿ ਕੈਮਰਾ ਅਜੇ ਵੀ ਸ਼ੁਰੂ ਹੋ ਰਿਹਾ ਸੀ) ਤੁਹਾਨੂੰ ਕਿਸੇ ਕਿਸਮ ਦੇ ਸੰਕੇਤਕ ਦੀ ਵੀ ਲੋੜ ਹੋਵੇਗੀ, ਜਿਸ ਨੂੰ ਅਸੀਂ "ਰੈਡੀ" ਕਹਿੰਦੇ ਹਾਂ। ਇਹ ਡੇਟਾ ਹਰੇਕ ਮੋਟਰ (9 ਬਿੱਟ, ਹਸਤਾਖਰਿਤ) ਦੀ ਟੀਚਾ ਗਤੀ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਨਿਯੰਤਰਣ (Ctrl. vhd) ਦੁਆਰਾ ਸੰਸਾਧਿਤ ਕੀਤਾ ਜਾਵੇਗਾ।
ਮੋਟਰ 'ਤੇ ਵਧੇਰੇ ਸਥਿਰ ਆਉਟਪੁੱਟ ਲਈ, ਤੁਸੀਂ ਬੰਦ-ਲੂਪ ਸਿਸਟਮ ਵਿੱਚ ਫੀਡਬੈਕ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ। ਇਸ ਲਈ ਮੋਟਰ ਸਪੀਡ ਮਾਪ ਡਿਵੀਜ਼ਨ ਤੋਂ ਹਰੇਕ ਮੋਟਰ ਦੇ ਇਨਪੁਟਸ "ਦਿਸ਼ਾ" ਅਤੇ "ਸਪੀਡ" ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਕਿਉਂਕਿ ਤੁਸੀਂ ਇਹਨਾਂ ਇਨਪੁਟਸ ਨੂੰ ਆਪਣੀ ਗਣਨਾ ਵਿੱਚ ਸ਼ਾਮਲ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤੁਹਾਨੂੰ ਇਹਨਾਂ ਹਸਤਾਖਰਿਤ ਮੁੱਲਾਂ ਨੂੰ 9-ਬਿੱਟ ਸਾਈਨਡ ਬਾਈਨਰੀ ਵਿੱਚ ਬਦਲਣਾ ਹੋਵੇਗਾ। ਇਹ ਦਸਤਖਤ ਕੀਤੇ ਬਾਈਨਰੀ ਕਨਵਰਟਰ (US2S.vhd) ਨੂੰ ਅਣ-ਹਸਤਾਖਰਿਤ ਦੁਆਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਗਲਤੀ ਦੀ ਗਣਨਾ (ਗਲਤੀ. vhd) ਕੀ ਕਰਦੀ ਹੈ ਹਰੇਕ ਮੋਟਰ ਲਈ ਕਿਰਿਆ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਟੀਚੇ ਦੀ ਗਤੀ ਤੋਂ ਮਾਪੀ ਗਤੀ ਨੂੰ ਘਟਾਉਂਦੀ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਜਦੋਂ ਦੋਵਾਂ ਦਾ ਮੁੱਲ ਇੱਕੋ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਘਟਾਓ ਜ਼ੀਰੋ ਹੋ ਜਾਂਦਾ ਹੈ ਅਤੇ ਮੋਟਰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਆਪਣੇ ਮੋਮੈਂਟਮ 'ਤੇ ਚੱਲੇਗੀ। ਤੁਸੀਂ ਗੁਣਾ ਦਾ ਇੱਕ ਕਾਰਕ ਵੀ ਜੋੜ ਸਕਦੇ ਹੋ ਤਾਂ ਜੋ ਰੋਬੋਟ ਟੀਚੇ ਦੀ ਗਤੀ ਤੇ ਤੇਜ਼ੀ ਨਾਲ ਪਹੁੰਚ ਸਕੇ।
ਕਿਉਂਕਿ ਮੋਟਰ ਕੰਟਰੋਲਰ ਨੂੰ ਹਰੇਕ ਮੋਟਰ ਦੀ ਗਤੀ ਅਤੇ ਦਿਸ਼ਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਤੁਹਾਨੂੰ ਕਾਰਵਾਈ ਦੇ ਹਸਤਾਖਰਿਤ ਮੁੱਲਾਂ ਨੂੰ ਦੋ ਵੱਖ-ਵੱਖ ਹਸਤਾਖਰਿਤ ਮੁੱਲਾਂ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਨਾ ਪੈਂਦਾ ਹੈ: ਸਪੀਡ (1 ਬਿੱਟ) ਅਤੇ ਦਿਸ਼ਾ (8 ਬਿੱਟ)। ਇਹ ਹਸਤਾਖਰਿਤ-ਤੋਂ-ਹਸਤਾਖਰਿਤ ਬਾਈਨਰੀ ਕਨਵਰਟਰ (S2US.vhd) ਦੁਆਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਮੋਟਰ ਕੰਟਰੋਲ ਡਿਵੀਜ਼ਨ ਲਈ ਇਨਪੁੱਟ ਬਣ ਜਾਵੇਗਾ।
ਅਸੀਂ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਇੱਕ ਮੋਡੀਊਲ ਵੀ ਜੋੜਿਆ ਹੈ ਕਿ ਜਦੋਂ ਰੋਸ਼ਨੀ ਦਾ ਪਤਾ ਨਾ ਲੱਗੇ ਤਾਂ ਕੀ ਕਰਨਾ ਹੈ (ਕੋਈ ਲਾਈਟ ਕਾਊਂਟਰ ਨਹੀਂ। Bhd)। ਕਿਉਂਕਿ ਇਹ ਮੋਡੀਊਲ ਮੂਲ ਰੂਪ ਵਿੱਚ ਇੱਕ ਕਾਊਂਟਰ ਹੈ, ਇਹ ਇਹ ਗਿਣੇਗਾ ਕਿ ਰੋਬੋਟ ਨੂੰ ਕਿੰਨੀ ਦੇਰ ਤੱਕ ਘੁੰਮਣ ਜਾਂ ਥਾਂ 'ਤੇ ਰਹਿਣ ਦੀ ਲੋੜ ਹੈ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰੇਗਾ ਕਿ ਰੋਬੋਟ ਆਪਣੇ ਵਾਤਾਵਰਣ ਨੂੰ "ਵੇਖਦਾ" ਹੈ ਨਾ ਕਿ ਇਸਦੇ ਸਾਹਮਣੇ ਕੀ ਹੈ, ਅਤੇ ਬੈਟਰੀ ਪਾਵਰ ਬਚਾਏਗਾ ਜਦੋਂ ਕੋਈ ਰੋਸ਼ਨੀ ਸਰੋਤ ਅਸਲ ਵਿੱਚ ਉਪਲਬਧ ਨਾ ਹੋਵੇ।
ਕਦਮ 6: ਨੂੰ ਮਿਲਾਓ Files
ਨੂੰ ਜੋੜਨ ਲਈ files, ਤੁਹਾਨੂੰ ਹਰੇਕ ਮੋਡੀਊਲ ਤੋਂ ਸਿਗਨਲਾਂ ਨੂੰ ਜੋੜਨ ਦੀ ਲੋੜ ਹੈ। ਅਜਿਹਾ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇੱਕ ਨਵਾਂ ਉੱਚ ਪੱਧਰੀ ਮੋਡੀਊਲ ਬਣਾਉਣਾ ਹੋਵੇਗਾ file. ਪਿਛਲੇ ਮੋਡੀਊਲਾਂ ਦੇ ਇਨਪੁਟਸ ਅਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਭਾਗਾਂ ਦੇ ਤੌਰ 'ਤੇ ਪਾਓ, ਕਨੈਕਸ਼ਨਾਂ ਲਈ ਸਿਗਨਲ ਜੋੜੋ ਅਤੇ ਹਰੇਕ ਪੋਰਟ ਨੂੰ ਸੰਬੰਧਿਤ ਜੋੜੀ ਨੂੰ ਨਿਰਧਾਰਤ ਕਰੋ। ਤੁਸੀਂ ਉਪਰੋਕਤ ਦ੍ਰਿਸ਼ਟੀਕੋਣ 'ਤੇ ਕਨੈਕਸ਼ਨਾਂ ਦਾ ਹਵਾਲਾ ਦੇ ਸਕਦੇ ਹੋ, ਅਤੇ ਇੱਥੇ ਕੋਡ ਨੂੰ ਦੇਖ ਸਕਦੇ ਹੋ।
ਕਦਮ 7: ਇਸਦੀ ਜਾਂਚ ਕਰੋ
ਜਦੋਂ ਤੁਸੀਂ ਪੂਰੇ ਕੋਡ ਨੂੰ ਪੂਰਾ ਕਰ ਲੈਂਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਇਹ ਜਾਣਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਕਿ ਕੀ ਤੁਹਾਡਾ ਕੋਡ ਬੋਰਡ 'ਤੇ ਅੱਪਲੋਡ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਕਿਉਂਕਿ ਕੋਡ ਦੇ ਕੁਝ ਹਿੱਸੇ ਵੱਖ-ਵੱਖ ਲੋਕਾਂ ਦੁਆਰਾ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ। ਇਸ ਲਈ ਇੱਕ ਟੈਸਟਬੈਂਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਿੱਥੇ ਤੁਸੀਂ ਡਮੀ ਮੁੱਲਾਂ ਨੂੰ ਇਨਪੁਟ ਕਰੋਗੇ ਅਤੇ ਦੇਖੋਗੇ ਕਿ ਕੀ ਕੋਡ ਉਸ ਤਰੀਕੇ ਨਾਲ ਵਿਵਹਾਰ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਉਹ ਵਿਵਹਾਰ ਕਰੇ। ਤੁਸੀਂ ਹਰੇਕ ਮੋਡੀਊਲ ਦੀ ਜਾਂਚ ਕਰਕੇ ਆਰਾਮ ਸ਼ੁਰੂ ਕਰ ਸਕਦੇ ਹੋ, ਅਤੇ ਜੇਕਰ ਉਹ ਸਾਰੇ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ, ਤਾਂ ਤੁਸੀਂ ਉੱਚ-ਪੱਧਰ ਦੇ ਮੋਡੀਊਲ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ।
ਕਦਮ 8: ਇਸਨੂੰ ਹਾਰਡਵੇਅਰ 'ਤੇ ਅਜ਼ਮਾਓ
ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਤੁਹਾਡੇ ਕੋਡ ਦੀ ਜਾਂਚ ਕੀਤੇ ਜਾਣ ਤੋਂ ਬਾਅਦ, ਤੁਸੀਂ ਅਸਲ ਹਾਰਡਵੇਅਰ 'ਤੇ ਕੋਡ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ। ਤੁਹਾਨੂੰ ਮਜਬੂਰੀ ਬਣਾਉਣੀ ਪਵੇਗੀ file Vivado (.xdc) 'ਤੇ file BASYS 3 ਲਈ) ਇਹ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਕਿ ਕਿਹੜੇ ਇਨਪੁਟਸ ਅਤੇ ਆਉਟਪੁੱਟ ਕਿਹੜੇ ਪੋਰਟਾਂ 'ਤੇ ਜਾਂਦੇ ਹਨ।
ਮਹੱਤਵਪੂਰਨ ਸੁਝਾਅ: ਅਸੀਂ ਔਖੇ ਤਰੀਕੇ ਨਾਲ ਸਿੱਖਿਆ ਕਿ ਇਲੈਕਟ੍ਰੀਕਲ ਕੰਪੋਨੈਂਟਸ ਦਾ ਕਰੰਟ ਜਾਂ ਵੋਲਯੂਮ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਮੁੱਲ ਹੋ ਸਕਦਾ ਹੈtages. ਮੁੱਲਾਂ ਲਈ ਡੇਟਾਸ਼ੀਟ ਦਾ ਹਵਾਲਾ ਦੇਣਾ ਯਕੀਨੀ ਬਣਾਓ। PMOD HB5 ਲਈ, ਵਾਲੀਅਮ ਸੈਟ ਕਰਨਾ ਯਕੀਨੀ ਬਣਾਓtage 12 ਵੋਲਟ 'ਤੇ ਪਾਵਰ ਸਰੋਤ ਤੋਂ (ਕਿਉਂਕਿ ਇਹ ਲੋੜੀਂਦਾ ਵੋਲਟ ਹੈtage ਮੋਟਰ ਲਈ), ਅਤੇ ਮੋਟਰ ਨੂੰ ਹਿਲਾਉਣ ਲਈ ਕਰੰਟ ਜਿੰਨਾ ਘੱਟ ਚਾਹੀਦਾ ਹੈ।
ਕਦਮ 9: ਇਸਨੂੰ ਹੋਰ ਹਿੱਸਿਆਂ ਨਾਲ ਜੋੜੋ
ਜੇਕਰ ਪਿਛਲੇ ਪੜਾਅ ਸਫਲ ਸਨ, ਤਾਂ ਅੰਤਮ ਕੋਡ ਨੂੰ ਰੋਬੋਟ ਵਿੱਚ ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਦੂਜੇ ਸਮੂਹਾਂ ਨਾਲ ਕੋਡ ਨੂੰ ਜੋੜੋ। ਫਿਰ, ਵੋਇਲਾ! ਤੁਸੀਂ ਸਫਲਤਾਪੂਰਵਕ ਇੱਕ ਰੋਸ਼ਨੀ ਦੀ ਭਾਲ ਕਰਨ ਵਾਲਾ ਰੋਬੋਟ ਬਣਾ ਲਿਆ ਹੈ।
ਕਦਮ 10: ਯੋਗਦਾਨ ਪਾਉਣ ਵਾਲੇ
ਖੱਬੇ ਤੋਂ ਸੱਜੇ:
- ਐਂਟੋਨੀਅਸ ਗ੍ਰੇਗੋਰੀਅਸ ਡੇਵਨ ਰਿਵਾਲਡੀ
- ਫੇਲਿਕਸ ਵਿਗੁਨਾ
- ਨਿਕੋਲਸ ਸੰਜੇ
- ਰਿਚਰਡ ਮੇਡਿਅੰਟੋ
ਬਹੁਤ ਅੱਛਾ: VHDL ਮੋਟਰ ਸਪੀਡ ਕੰਟਰੋਲ: ਦਿਸ਼ਾ ਅਤੇ ਗਤੀ ਦਾ ਫੈਸਲਾ ਕਰੋ, ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ: ਪੰਨਾ 6
ਦੁਬਾਰਾ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦviewing! ਇਹ ਪ੍ਰੋਜੈਕਟ ਅਸਲ ਵਿੱਚ ਇੱਕ ਕਲਾਸ ਪ੍ਰੋਜੈਕਟ ਦਾ ਸਿਰਫ ਇੱਕ ਹਿੱਸਾ ਹੈ (BASYS 3 ਬੋਰਡ ਅਤੇ OV7670 ਕੈਮਰੇ ਨਾਲ ਲਾਈਟ ਸੀਕਿੰਗ ਰੋਬੋਟ), ਇਸਲਈ ਮੈਂ ਜਲਦੀ ਹੀ ਕਲਾਸ ਦੇ ਨਿਰਦੇਸ਼ਾਂ ਵਿੱਚ ਲਿੰਕ ਜੋੜਾਂਗਾ!
ਸ਼ਾਨਦਾਰ: ਮੈਂ ਹਰ ਚੀਜ਼ ਨੂੰ ਇਕੱਠੇ ਦੇਖਣ ਲਈ ਉਤਸੁਕ ਹਾਂ।
ਦਸਤਾਵੇਜ਼ / ਸਰੋਤ
![]() |
instructables VHDL ਮੋਟਰ ਸਪੀਡ ਕੰਟਰੋਲ ਦਿਸ਼ਾ ਨਿਰਦੇਸ਼ ਅਤੇ ਸਪੀਡ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ [pdf] ਹਦਾਇਤਾਂ VHDL ਮੋਟਰ ਸਪੀਡ ਕੰਟਰੋਲ ਡਿਸਾਈਡ ਡਾਇਰੈਕਸ਼ਨ ਅਤੇ ਸਪੀਡ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ, VHDL ਮੋਟਰ ਸਪੀਡ, ਕੰਟਰੋਲ ਡਿਸਾਈਡ ਡਾਇਰੈਕਸ਼ਨ ਅਤੇ ਸਪੀਡ ਖੱਬੇ ਅਤੇ ਸੱਜੇ ਸਪੀਡ ਕੰਟਰੋਲਰ |